0

私はウェブベースのAndroidアプリに取り組んでおり、アプリがサーバーにデータを投稿し、応答をJSONStringとして読み取るようにしたいのですが、コードは3つの異なるデバイスでテストされ、Droid Xを除いて、すべて問題ありません。 HttpResponseからinputStreamを読み取るときにハングアップします。これが私のコードです:

HttpResponse response = mClient.execute(mPost);
StatusLine status_line = response.getStatusLine();
int status_code = status_line.getStatusCode();
/*
 * Not ok Response
 */
if (status_code != 200){
  mBusy = false;            
  mListener.log("Error Status code = "+String.valueOf(status_code));
  return false; 
}

HttpEntity entry = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
mResponse = reader.readLine();

何かアイデアはありますか?

4

1 に答える 1

1

問題の原因が Android のデフォルトの HTTP クライアントを使用していることがわかりました。代わりに私は使用しました:

            HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
        HttpProtocolParams.setUseExpectContinue(params, false);  
        HttpConnectionParams.setConnectionTimeout(params, 10000);
        HttpConnectionParams.setSoTimeout(params, 10000);
        ConnManagerParams.setMaxTotalConnections(params, 100);
        ConnManagerParams.setTimeout(params, 30000);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http",PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https",PlainSocketFactory.getSocketFactory(), 80));
        ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry);
        mClient = new DefaultHttpClient(manager, params);

それ以外の :

mClient = new DefaultHttpClient();

それが誰かを助けることを願っています。

于 2012-07-23T20:28:45.330 に答える