2

REST APIFileNotFoundExceptionを呼び出すと取得されます。GETここで取得する HTTP ステータス コードは403. 呼び出しの場合は を取得
しますが、ヘッダーを渡します。ここで HTTP ステータス コードを取得します。POSTIOException : No authentication challenges foundAuthorization401

私のすでに尋ねられた質問を見て、呼び出しのコードとログキャットのスクリーンショットを確認してくださいPOST

以下に、GET 呼び出しの logcat スクリーン ショットを添付します。

ここに画像の説明を入力

注:
1) を使用してみAuthenticatorました。
2) NO_WRAP、URL_SAFE、DEFAULT などのさまざまな base64 フラグを試しました。
3)作品への私の単純な呼び出しwww.google.com
4)ログに記録するとurlConnection.getErrorStream()、画像の最後の行が印刷されます。それが何なのか、どういう意味なのかわかりません。ヘッダーContent-typeに toを指定しました。application/json

更新:使用Burpしてみましたが、ヘッダー「Accept」、「Content-type」が異なることがわかりました。iOSアプリと同じものを使用しました。しかし、それでもうまくいきません。

注意事項 :
1) 行で常に例外がスローされますin = urlConnection.getInputStream();
2) 私はいくつかのことをログに記録しました。それによると、コンテンツの長さは 114 で、null ではありません。コンテンツタイプはapplication/json; charser=utf-8.

4

4 に答える 4

0

同様の問題があり、認証済みセッション Cookie を渡すことで解決しました。あなたの状況でそれが可能かどうかはわかりません。

于 2013-06-25T18:14:56.487 に答える
0
    AuthUser="foobar"
    AuthPass="password"
    URL targetUrl = new URL("http://www.google.com/");
    HttpURLConnection connection = (HttpURLConnection) targetUrl.openConnection();
    connection.setRequestMethod("GET");
    connection.setDoInput(true);
    String authStr = Base64Variants.MIME_NO_LINEFEEDS.encode((AuthUser+":"+AuthPass).getBytes());
    connection.addRequestProperty("Authorization", "Basic "+authStr);
    InputStream inputStream= connection.getInputStream();

私はこのようなものを実行するだけで、完璧に機能しました。Base64Variants.MIME_NO_LINEFEEDSを使用していることを確認してください。適切な認証ヘッダーを作成できるはずです。それでもうまくいかない場合は、サーバー側に問題がある可能性があります。

于 2013-06-25T21:59:24.967 に答える