私は以下の2つの関数を使ってサーバから文字列をダウンロードしています。私はまた、クライアントから見ても、サーバから見ても、テキストをダウンロードするのにかかる時間を記録しています。ダウンロードした文字列は決して同じではありません。文字列をダウンロードするときのタイムアウト
サーバの時間はほんの数ミリ秒ですが、クライアントが見た時間は無線信号に応じて平均100ミリ秒です。サーバー時間が許容範囲内にあるにもかかわらず、クライアントの時間が3000ミリ秒(ただし3200ミリ秒を超えることはありません)まで上昇することがあります。
タイムアウトが定義されていると思っていますが、どこにあるのかわかりません。それは私のコードではなく、私は開発者サイトとgoogleの結果を見て回りました。
私は、この遅延が定義される可能性のある手がかりを与えて、デフォルトでは3000ミリ秒であることを確認できると期待しています。ところで
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;
}
と
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;
}
:私はGoogleの検索結果の1から2つの機能を借りました。
EDIT:スレッド内からDownloadText(url)を呼び出しています。私はそれがタイムアウトと何か関係があると思うようになった。それは?
これは私の質問には答えません。私はそれを自分で定義するのではなく、タイムアウトの理由を見つけ出すことを望んでいます。 – skari