0

私は大きな問題を抱えています。アプリケーションからいくつかのパラメーターを URL に POST する必要があります。しかし、WebView オブジェクト内でそれを実行しようとすると、「信頼されていない証明書」という例外が発生します (例外は、WebViewClient onReceivedSslError() のオーバーライドのメソッドによって発生します)。サーバーと正しくハンドシェイクするにはどうすればよいですか? ヒントを教えてください。気が狂いそう…

本当に、本当にありがとう...

編集:これは私が自分のウェブビューを定義した方法です

webView = (WebView) myFragmentView.findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String string){
            Log.debug(tag, "URL pagina terminata :"+webView.getUrl() );
            if(progress!=null) 
                if(progress.isShowing()){progress.dismiss();}
        }

        @Override
        public void onReceivedError(WebView view, 
                int errorCode,
                String description, 
                String failingUrl) {
            Log.error(tag, "ERROR:" + description );
           }

        @Override
        public void onReceivedSslError(WebView view,
                SslErrorHandler handler, SslError error) {
            super.onReceivedSslError(view, handler, error);
            Log.error(tag, "SSL Error received: "+ error.getPrimaryError());

            handler.proceed();
        }


    });

これは、WebView 内で postRequest を作成した方法です

webView.postUrl(url, EncodingUtils.getBytes(postParameters, "base64"));

これは LogCat の出力です。

SSL Error received: 3 - Untrusted Certificate

さて、少しグーグルで調べてみると、証明書の有効性を確認し、キーチェーンをローカルのキーストアにインポートする必要があることがわかりました。しかし、問題は、どこから始めればよいかわからないことです... :)

4

1 に答える 1

1

セキュリティが優先されない場合は、メソッドを呼び出さないでhandler.proceed()ください。onReceivedSslError()super

セキュリティが優先される場合(そうあるべきです):

私はこれを webView で自分で試したことはありませんが、次のように証明書を設定してみてください: Android WebView setCertificate issues SSL problems

実際の証明書を取得するには、それらをブラウザーにロードして (ブラウザーで URL を開いたときに警告を受け入れて)、そこからエクスポートするか、ここで説明されているように openssl ツールを使用できます: http://blog. crazybob.org/2010/02/android-trusting-ssl-certificates.html

于 2013-02-16T12:58:12.733 に答える