AndroidHttpPostRequestの問題が発生しました。このようなコード:
@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電話でそれぞれいくつかのテストを行いました。
テスト1:
に変更http://www.*.cn/test.aspx
しましたがhttp://www.google.com
、正常に動作します。
テスト2:
の行をコメントアウトしてから、"httpPost.setEntity (requestHttpEntity); "
コードのリクエストパラメータなしでURLをリクエストしました。正しく動作します。
アドバイスをください!ありがとう!