更新: 找到自己的答案,请参见下面:-)
嗨,使用HttpClient的HTTP Post请求需要2秒,为什么?
我'当前译码的Android应用程序,在使用HTTP POST和的AsyncTask后台提交的东西。我为此使用org.apache.http.client包。我根据我的代码this example。
基本上,我的代码看起来是这样的:
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毫秒左右,所以这个问题似乎并不是网络延迟本身。
该问题似乎并未出现在服务器端,我也尝试将数据发布到http://www.disney.com/,结果相似。在本地向我的服务器发送数据时,Firebug显示1毫秒的响应时间。
这发生在模拟器和我的Nexus One(都与Android 2.2)。
如果你想看完整的代码,我已经把它放在GitHub。
这只是一个虚拟程序,通过按下按钮在后台使用AsyncTask执行HTTP Post。这是我的第一个Android应用程序,也是我第一个很长时间的Java代码。并incidentially,也是我在Stackoverflow上的第一个问题;-)
httpclient.execute(httppost)需要这么长时间的任何想法?
我遇到了这个完全相同的问题,除了更糟。它甚至可能需要20秒钟才能完成一个'HttpPost'。我尝试了你的修复,但它似乎没有帮助。 – theblang 2014-03-13 22:00:56