HttpDefaultClientのexecute()メソッドの実行メソッドに大きなパフォーマンス上の問題があります。HttpDefaultClientのexecute()が非常に遅い
私は現在、サーバーにデータを投稿し、JSONを受け取り、データを逆シリアル化するためにこれを使用しています。私の電話では8〜30秒かかります。私がWifiに切り替えると(それはかなり速いです、私のPCで同じコールが300msかかる)、それは3から8秒かかります。その時間の少なくとも90%が実行メソッドに費やされています。我々はまた、2秒に1以内に同じことを行うことが可能であるiOSアプリを開発
HttpPost post = new HttpPost(DEST_URL);
HashMap<String, String> params = req.getPostParams();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
for (String key : params.keySet()) {
nameValuePairs.add(new BasicNameValuePair(key, params.get(key)));
}
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
post.setHeader(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
HttpResponse response = httpClient.execute(post); // very slow!
return response;
:
は、このコードを使用することです。 http(httpsは将来)のためのより速い方法がありますか?
このように、クライアントの作成:使用
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
final SSLSocketFactory socketFactory = SSLSocketFactory
.getSocketFactory();
socketFactory
.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", socketFactory, 443));
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
HttpClient client = new DefaultHttpClient(params);
:HTCワイルドファイア、アンドロイド2.2.1以上
HttpUrlConnection、http://developer.android.com/reference/java/net/HttpURLConnection.htmlを試してください – logcat
うわー、それはずっと高速です。私の現在のコードで1回、URL接続で1回、サービスを2回呼び出すテストアプリケーションでは、URL接続は700ms、HTTPクライアントは1700msでした – schlingel
Androidの開発者によるこのブログ記事によると: http://android-developers.blogspot.com/2011/09/androids-http-clients.html、HttpUrlConnectionはHTTP通信を行うための「推奨された」方法のようです。しかし、彼らは改善が2.3以来と言います。奇妙な。おそらく、HTCは彼らが出荷した実装にパッチを当てたのだろうか? ;) – ArjunShankar