1

アプリをテストしていると、GT-I9100(ヨーロッパ)のSamsung GalaxySIIという1つのデバイスで散発的に発生するエラーが発生し続けます。これらのエラーは、SPH-D710(Sprint)Samsung Galaxy S IIでさえも、他のデバイスでは発生しません。

アプリが使用するURLは変更されません。これらは、私がWebブラウザーに入力できるもの、またはアプリのiOSバージョンとデスクトップバージョンが使用するものと同じです。ただし、UnknownHostExceptionをスローする場合と、スローしない場合があります。

これが私が使用しているコードの高度にサニタイズされたバージョンです:

AndroidHttpClient client = AndroidHttpClient.newInstance(activity.getString(R.string.user_agent));
HttpPost httpPost = new HttpPost("http://" + subdomainId + ".website.com/doSomething.aspx");

  try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("parameter1", value1));
    nameValuePairs.add(new BasicNameValuePair("parameter2", value2));
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    // Execute HTTP Post Request
    HttpContext httpContext = new BasicHttpContext();
    HttpResponse response = client.execute(httpPost, httpContext);

  ... ...

これを引き起こしている可能性のあるSamsungGalaxySIIの癖はありますか?Android2.3.6を実行しています。

4

2 に答える 2

1

他の人が言ったように、それは存在しないインターネット接続によって引き起こされる可能性があります。

たぶん、そのようなリクエスト再試行ハンドラーを追加してみてください。

    HttpRequestRetryHandler retryhandler = new DefaultHttpRequestRetryHandler(6, true);

    httpClient.setHttpRequestRetryHandler(retryhandler);

そうすれば、インターネットが一瞬停止した場合でも、httpclientで処理できます。ここでapacheは、トランスポートエラーが発生した場合に再試行することも提案します

通常、トランスポート例外は致命的ではなく、失敗したメソッドを再試行することで回復できます。

とにかく再試行ハンドラーを使用することをお勧めします

于 2012-06-14T16:02:11.857 に答える
0

UnknownHostExceptionは、信頼できない、または存在しないインターネット接続が原因で発生する可能性があります。これらをキャッチし、問題を解決するために必要な手順を実行するには、try / catchブロックが必要です(ユーザーにインターネット接続を確認するように依頼する場合があります)。

ヨーロッパ版の方が問題が多いのは、ここではサービスがないからだと思います(アメリカで働いていると仮定して)?

于 2012-06-14T15:50:28.873 に答える