0
小さなデータを抽出するためにあまりにも多くのデータを返すWebサービスを呼び出そうとしています。HttpURLConnectionを使用してWebServiceを呼び出すときのパフォーマンスチューニング
私はJavaで生成された標準のClientを使用しないことにしました。ほとんどの時間は、それは70msで約取るconnection.getInputStream();
への呼び出しで消費される
HttpURLConnection connection;
byte[] requestData = .....
URL url = new URL(wsUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/xml");
connection.setRequestProperty("Content-Length", String.valueOf(requestData.length));
connection.connect();
OutputStream connOs = connection.getOutputStream();
connOs.write(requestData);
connOs.close();
InputStream is = connection.getInputStream(); // <<< THIS IS THE MOST TIME CONSUMING, it takes about 70 ms
byte[] rply = stream2Bytes(is);
is.close();
connection.disconnect();
:
私は、接続を行うには、次のコードを使用します。
私はこの時間を短縮するために多くのリクエストヘッダーを設定しようとしていますが、届きません。
HttpUrlConnectionはデフォルトでConnection=KEEP-ALIVE
ヘッダーを使用するHTTP1.1プロトコルを使用しているため、基になるTCP接続が再利用されることを理解します。