1

私の Android アプリケーションでは、サーバーに保存されている XML ファイルを読み取る必要があります。これはセキュリティで保護された Web ページ [SSL(https)] であるためhttps://serverAddress/path/、XML ファイルが存在する場所 ( ) にアクセスするには、通常、ユーザー名/パスワード認証が必要です。

以下は、XML ストリームを読み取って取得するために使用したコードです。HttpResponse httpResponse = httpClient.execute(httpGet);ただし、ステートメントを実行しようとすると、常に例外になります。例外は言うNot trusted server certificate

<uses-permission android:name="android.permission.INTERNET" />また、マニフェスト ファイルにインターネット アクセス許可を追加しました。

XML ファイルが認証を必要としない場所に保存されている場合、問題なく動作します。どこでも検索しましたが、これを行う例は見つかりませんでした。誰かがこのプロセスを導くことができれば、私は本当に感謝しています. 前もって感謝します...!!!!

   try
   {
         Log.v("State","Started...");

         HttpClient httpClient = new DefaultHttpClient();
         HttpGet httpGet = new HttpGet("https://serverAddress/path/MyXMLFile.xml");
         httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("username", "password"),HTTP.UTF_8, false));
         HttpResponse httpResponse = httpClient.execute(httpGet);
         InputStream xmlInputStream = httpResponse.getEntity().getContent();
         Toast.makeText(getApplicationContext(), this.convertStreamToString(xmlInputStream), Toast.LENGTH_LONG).show();

         Log.v("State","Finish...");
    }
    catch(Exception e)
    {
        Log.v("State",e.getMessage().toString());
    }
4

1 に答える 1

1

これはhttp問題ではありませんhttps。安全な接続を使用しています。私もそれらでかなり悩みました。簡単な修正として、このかけがえのない投稿を使用して、クライアントにすべての証明書を信頼させることができます。

後で、適切な証明書のみを信頼することを検討してください。

編集:SOユーザーがいかにうるさいかを知っているからです。はい、すべての証明書を信頼するのは悪い習慣ですが、これは 3 分で実行でき、残りのコードをテストできます。これは潜在的なセキュリティ違反であることを忘れないでください。指定された証明書のみを信頼するように切り替える必要があります。

于 2012-04-24T11:15:48.107 に答える