我遇到了一个 Android HttpPost 请求问题。像这样的代码:
@Override
public void onClick(View v) {
NameValuePair nameValuePair1 = new BasicNameValuePair("name", "zhangsan");
NameValuePair nameValuePair2 = new BasicNameValuePair("age", "18");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(nameValuePair1);
nameValuePairs.add(nameValuePair2);
try {
HttpEntity requestHttpEntity = new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8);
HttpPost httpPost = new HttpPost("http://www.*.cn/test.aspx");
httpPost.setEntity(requestHttpEntity);
HttpClient httpClient = new DefaultHttpClient();
//Using the Http client sends request object
try {
System.out.println("1111111111111");
httpResponse = httpClient.execute(httpPost);
System.out.println("2222222222222");
httpEntity = httpResponse.getEntity();
System.out.println("33333333333333");
System.out.println(EntityUtils.toString(httpResponse.getEntity()));
System.out.println("44444444444444");
} catch (Exception e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
通过测试,程序可以在Android2.3和模拟器上正常运行,最终得到正确的输出。
在Android2.1和模拟器或Android2.2上运行会卡在以下位置。
System.out.println (EntityUtils.toString (httpResponse.getEntity ()));
等了半天,偶尔会弹出应用无响应的提示,偶尔会出现"44444444444444"
. 但是没有"System.out.println (EntityUtils.toString (httpResponse.getEntity ()));"
正常情况下会得到的函数的输出。
所以我分别对带模拟器的android2.2手机和带模拟器的android2.1手机做了一些测试。
测试一:
我改成http://www.*.cn/test.aspx
,http://www.google.com
它运行正常。
测试二:
我注释掉了"httpPost.setEntity (requestHttpEntity); "
, 然后在代码中请求了没有请求参数的 URL。它运行正确。
请给我一个建议!谢谢!