android http 慢,android httpurlconnection數據連接速度慢

我在下面幾行中使用了一些東西:在一行中做一個3個HTTP請求(一個接一個),然後等待一個給定的時間,然後再循環做3個HTTP請求。

我正在使用keep-alive,它基本上也正常工作,但在第一個HTTP請求上,每次我從3 HTTP請求開始時都會有2秒的懲罰。只有第一個HTTP請求有這2秒的懲罰。如果我將連續HTTP請求之間的等待時間降低到200毫秒,所有請求都很快,而沒有第一個請求看到這2秒的懲罰。

顯然這聽起來像第一個請求可能不使用保持連接,但事實並非如此。我在服務器上運行tcpdump,並且可以清楚地看到所有請求都使用相同的TCP連接而不關閉,並再次建立新的連接。服務器上的保持活動狀態設置爲60秒,而等待應用程序的時間爲5秒。另外,當我切換到WIFI這種行爲,我看不到。與此同時等待所有請求都很快。

在HTTP連接的代碼是使用HttpURLConnection類和如下所示:

m_res.error = null;

HttpURLConnection connection;

try {

connection = (HttpURLConnection)(new URL(m_url + "/" + m_call.command).openConnection());

connection.setDoOutput(true); // triggers POST.

connection.setDoInput(true);

connection.setRequestProperty("Accept-Charset", m_charset);

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + m_charset);

connection.setRequestProperty("Connection", "Keep-Alive");

connection.setRequestProperty("Accept-Encoding", "gzip");

//connection.setChunkedStreamingMode(0);

OutputStream output = null;

try {

output = connection.getOutputStream();

output.write(m_call.query_string.getBytes(m_charset));

InputStream response = null;

try {

response = connection.getInputStream();

if ("gzip".equals(connection.getContentEncoding())) {

response = new GZIPInputStream(response);

}

}

catch (IOException e) {

response = connection.getErrorStream();

}

if (response == null) {

m_res.error = "Connection Error";

}

else {

m_res.body = getAsString(response);

m_res.status = connection.getResponseCode();

}

}

catch (IOException e) {

e.printStackTrace();

m_res.error = "Connection Error";

}

finally {

if (output != null)

try {

output.close();

} catch (IOException logOrIgnore) {}

}

}

}

2012-08-23

domcyrus

+0

和您的問題是... –

+0

爲什麼數據連接上的第一個http請求如此緩慢? –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值