Обновление: Нашел ответ сам, см. Ниже: -)
Привет,
В настоящее время я кодирую приложение Android, которое передает материал в фоновом режиме с помощью HTTP Post и AsyncTask. Я использую org.apache.http.client Пакет для этого. Я основывал свой код на в этом примере.
В принципе, мой код выглядит следующим образом:
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.137:8880/form");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
Log.e(TAG,e.toString());
} catch (IOException e) {
Log.e(TAG,e.toString());
}
}
Проблема в том, что строка httpclient.execute(..) занимает около 1,5-3 секунд, и я не понимаю, почему. Просто запрос страницы с HTTP Get занимает около 80 мс или около того, поэтому проблема не является самой локальной задержкой.
Проблема, похоже, не на стороне сервера, я также попробовал данные POSTing для http://www.disney.com/ с аналогичными медленными результатами, И Firebug показывает время отклика 1 мс при отправке данных на мой сервер локально.
Это происходит в эмуляторе и с моим Nexus One (оба с Android 2.2).
Если вы хотите посмотреть полный код, я положил его на GitHub.
Это просто фиктивная программа, чтобы сделать HTTP-сообщение в фоновом режиме, используя AsyncTask нажатием кнопки. Это мое первое приложение для Android и мой первый Java-код в течение длительного времени. И, кстати, также мой первый вопрос о Stackoverflow; -)
Любые идеи, почему httpclient.execute(httppost) занимает так много времени?