我正在使用以下兩個函數從服務器下載字符串。我也記錄了下載文本所需的時間,無論是客戶端還是服務器都可以看到。下載的字符串從不相同。下載字符串時超時
服務器時間只有幾毫秒,但客戶端看到的時間平均爲100毫秒,具體取決於wifi信號。有時候,即使服務器時間仍在可接受的範圍內,客戶端時間也會上升到3000毫秒(但從不高於3200毫秒)。
我開始認爲超時是在某處定義的,但我不知道它在哪裏。這不在我的代碼中,我在開發者網站和谷歌環顧四周,沒有結果。
我希望有人可以給我一些線索,可以定義這種延遲,並確認它默認爲3000毫秒。
private String DownloadText(String URL)
{
String str = "";
int BUFFER_SIZE = 2000;
InputStream in = null;
try{
in = OpenHttpConnection(URL);
} catch (IOException e1) {
e1.printStackTrace();
return "";
}
catch(ArithmeticException ae){
//
}
try{
InputStreamReader isr = new InputStreamReader(in);
int charRead;
char[] inputBuffer = new char[BUFFER_SIZE];
try {
while ((charRead = isr.read(inputBuffer))>0)
{
//---convert the chars to a String---
String readString =
String.copyValueOf(inputBuffer, 0, charRead);
str += readString;
inputBuffer = new char[BUFFER_SIZE];
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return "";
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
與
private InputStream OpenHttpConnection(String urlString) throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection)) throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
}
catch (Exception ex) {
throw new IOException("Error connecting");
}
return in;
}
BTW:我從谷歌的搜索結果借了這兩種功能。
編輯:我從線程內調用DownloadText(url)。我開始認爲這可能與超時有關。可以 ?
這並不回答我的問題。我不想自己定義它,而是找出暫停的原因。 – skari