更新: 我自己找到了答案,请看下面 :-)
你好,
我正在编写一个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毫秒左右,所以问题似乎不是网络延迟本身。问题似乎也不在服务器端,我还尝试了将数据POST到http://www.disney.com/,结果也很慢。当我在本地服务器上POST数据时,Firebug显示响应时间为1毫秒。
这在模拟器上和我的Nexus One上都发生了(均使用Android 2.2)。
如果您想查看完整代码,我已经将其放在GitHub上。
这只是一个使用AsyncTask在后台执行HTTP Post的虚拟程序,通过按下按钮来触发它。这是我的第一个Android应用程序,也是我很长一段时间以来的第一个Java代码。顺便说一句,这也是我在Stackoverflow上的第一个问题 ;-)
有什么想法为什么httpclient.execute(httppost)会如此缓慢吗?
HttpPost
。我尝试了你的修复方法,但好像没有帮助。 - theblang