0

androidユーザーが「更新」ボタンを押すことで更新できるアプリがあります。これはwifiで完璧に機能します。ただし、モバイルデータでは問題があります。UPDATEプロセスはRESTサーバーに接続し、実際には異なるデータの3つのURLに接続します。モバイルデータでは、最初と最後のURLは正常に機能しますが、2番目のURLは空白のデータを返します。私が言ったように、WIFIでは3つのURLはすべて完璧に機能しますが、3Gではそうではありません。問題を引き起こしているのは常に2番目のURLだけです。

これが私のコードです。それはかなり標準的です:

//FIRST
URL url = new URL(Constants.firstURL); 
String line = null; 
InputStream is = (InputStream) url.getContent(); 
StringBuilder sb = new StringBuilder(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
firstRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close(); 

//SECOND
url = new URL(Constants.secondURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
secondRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

//THIRD
url = new URL(Constants.thirdURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
thirdRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

私はこれまでこの問題に遭遇したことがないので、これについて助けていただければ幸いです。

ありがとうございました。

編集:私が見ることができるどこにもエラーはありません、そして私はキャッチ、、そして例外がスローされないURLのものを持ってtry/catchMalformedURLExceptionます。Logcatも何も教えてくれません。IOExceptionNullPointerException

4

1 に答える 1

0

OK、しばらくして自分で答えましたが、返事を忘れました。

問題は、スレッド内からこのメソッドを呼び出していたという事実でした。残りのコードが前進している間、スレッドは機能し始めていました。それが前進するまでに、2番目のURLは単に終了していませんでした。

呼び出しをスレッドの外に移動して順番に実行すると、すべて問題ありませんでした。

インターネット検索をスレッドで実行する必要があると思っていましたが、これらの呼び出しはすでにスレッドに含まれているため、必要ありませんでした。

于 2012-08-29T15:19:53.137 に答える