使用HttpURLConnection调用WebService时的性能调整

时间:2012-01-10 09:32:39

标签: http tcp httpurlconnection

我正在尝试调用一个返回太多数据的Web服务,只是为了提取一小段数据。

因此,我决定不使用由Java生成的标准客户端。

我使用以下代码进行连接:

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();

connection.getInputStream();调用消耗的时间最多,大约需要70毫秒。

我正在尝试设置多个请求标头以缩短此时间但无法访问。

我理解HttpUrlConnection使用默认使用Connection=KEEP-ALIVE标头的HTTP1.1协议,以便重用底层TCP连接。

1 个答案:

答案 0 :(得分:0)

connection.getInputStream(); - 等待服务器响应的函数...你无法加速这个过程。