2011-12-06 5 views
0

は、私がWebView.postUrl()を呼び出す:デバイス依存のWebViewおよび/またはWebViewClientの異常をデバッグするにはどうすればよいですか?私のクラスの一つで

LGオプティマスS上で完璧に動作しますが、HTC Nexus Oneの上でいくつかの理由で動作しません
getWebView().postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); 

。続い WebViewClient.onPageStarted()呼び出し、

  • を生成

    1. :私は標的部位が期待される結果とpostUrl()クエリに応答し、常にことを特徴としていることを意味し、「働く」ことで

      犯人のネクサスでWebViewClient.onPageFinished()

    続いWebView.loadUrl()

  • 一方、最初のWebViewClient.onPageStarted()コールだけが生成され、他のコールは決して続かれません。

    明らかにWebViewおよび/またはWebViewClientは、異なるデバイスで異なる動作をします。どちらのデバイスも、正確なアプリケーションコードをで実行しているためです。

    (またはそれがまったく同じのWiFiゲートウェイを使用する別のデバイスに異なった応答だサイトです?)両方のデバイスが同じ正確なアプリケーション・コードを実行されますが、Androidのバージョンでは少し異なっている

    :LG 2.3.3を実行し、N1は2.2.1を実行します。

    この難しい問題のデバッグにどのようにアプローチするかについてのヒントやヒントはありますか?

    たとえば、カバーの下で実際に起こっていることを追跡するためにどこかに配置できるフックはありますか?

  • 答えて

    2

    WebViewClientのonReceivedSslErrorとonReceivedErrorをオーバーライドします。私は、SSL証明書にワイルドカードドメインの問題を引き起こすバグや特定のCAを信頼しない2.2の問題であると推測しています。これらの特定のエラーは両方ともonReceivedSslErrorで捕捉されます。

    これらのメソッドのいずれかが呼び出されると、ページのロードが完了しないことがあります。

    エラーがなければ、手動で設定する必要があるデバイスのUser-Agentのために、サーバーが何か異なる動作をしている可能性があります。

    +0

    これは非常に参考になり、非常に必要なヒントです。私はそれを実装して報告します。その間に+1。 – an00b

    +0

    OK、私は初期の結果を返します:私は 'onReceivedError'と' onReceivedSslError'の両方を実装して、LogCatに何かを記録し、エラーはまったくありません!私は 'onReceivedSslError'を持っていないことに驚いていません。なぜなら、それは単純なクエリ(必ずしもSSL経由ではない)なので、受信エラーがないという事実は、2番目の推測(サーバのユーザエージェント依存動作)犯人になりなさい。まもなくそれを実験します。 – an00b

    +0

    更新2:私は、NAのUAをLGのように(WebSettings.setUserAgentStringを使用して)偽装して、簡単な実験を行いました。(奇妙な)振る舞いは同じままです!つまり、 'postUrl()'に対するウェブサイトの応答はありません。私は自分のコードのバグを疑うようになり始めています...(N1以外のすべての電話機でコードがうまく動作するようになったら、どうやってそれを見つけるのでしょうか?) – an00b

    関連する問題