Сообщение Android POST не отправляется - PullRequest
0 голосов
/ 21 июня 2011

Я столкнулся с довольно странной ошибкой. Я написал приложение для Android, которое загружает простой текстовый файл на сервер. Код для подключения следующий:

try {
    URL = new URL(myURL);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "multipart/form-data; boundary="+"---");
    DataOutputStream output = new DataOutPutstream(connection.getOutputStream());
    output.writeBytes(<my post request>);
    output.flush();
    output.close();
    connection.connect();
}

Когда я запускаю этот метод, почтовый запрос никогда не отправляется на сервер. На wireshark ничего не появляется, и если я смотрю в logcat, ошибок нет, и соединение устанавливается нормально, сообщение POST просто никогда не отправляется. Однако, если я добавлю простую строку сразу после connection.connect (), такую ​​как:

connection.getResponseCode();

Внезапно сообщение POST отправляется без проблем. Что тут происходит? Требуется ли получить код ответа для отправки сообщения?

Ответы [ 2 ]

0 голосов
/ 21 июня 2011
  1. Почему вы должны вызывать URLConnection # getInputStream, чтобы иметь возможность писать в URLConnection # getOutputStream? Короче говоря, вы должны вызвать getInputStream () и закрыть его. getResponseCode () также работает, поскольку требует установленного соединения.
  2. Вам не нужно звонить

    connection.connect (); который является избыточным.

Рабочий образец вы можете получить здесь: http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139

0 голосов
/ 21 июня 2011

Вы устанавливаете для doInput значение true. Может быть, из-за этого соединение URL ожидает ввода. Попробуйте установить его в false. Но я тоже могу ошибаться. Это всего лишь предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...