Обновление: Сам нашел ответ, см. Ниже: -)
Привет,
В настоящее время я пишу приложение для 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 Post в фоновом режиме, используя AsyncTask одним нажатием кнопки.Это мое первое приложение для Android и мой первый код на долгое время.Кстати, также мой первый вопрос о Stackoverflow; -)
Есть идеи, почему httpclient.execute (httppost) занимает так много времени?