[解決済み] サーバーがHTTPレスポンスコードを返しました。401 for URL: https
2022-02-14 08:03:25
質問
Javaを使用して、XML形式で表示を返すHTTPSサイトにアクセスしています。私はURL自体でログイン認証情報を渡します。以下はコード・スニペットです。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
requestURL = "https://Administrator:Password@localhost:8443/abcd";
try {
InputStream is = null;
URL url = new URL(requestURL);
InputStream xmlInputStream =new URL(requestURL).openConnection().getInputStream();
byte[] testByteArr = new byte[xmlInputStream.available()];
xmlInputStream.read(testByteArr);
System.out.println(new String(testByteArr));
Document doc = db.parse(xmlInputStream);
System.out.println("DOC="+doc);
} catch (MalformedURLException e) {
}
署名付き/未署名の証明書を検証しないプログラム内にトラストマネージャーを作成しています。しかし、上記のプログラムを実行すると、次のようなエラーが表示されます。 サーバーがHTTPレスポンスコードを返しました。401 for URL: https://Administrator:Password@localhost:8443/abcd
ブラウザで同じurlを使用すると、xmlが正しく表示されます。Javaプログラム内でこれを動作させる方法を教えてください。
どのように解決するのですか?
401はquot;Unauthorized"を意味するので、あなたの認証情報に何かあるに違いありません。
私は、ジャワの
URL
は、あなたが示している構文をサポートしていません。代わりにAuthenticatorを使用することができます。
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(login, password.toCharArray());
}
});
を実行し、その後、認証情報なしで通常のurlを呼び出すだけです。
もう1つの方法は、ヘッダーでクレデンシャルを提供することです。
String loginPassword = login+ ":" + password;
String encoded = new sun.misc.BASE64Encoder().encode (loginPassword.getBytes());
URLConnection conn = url.openConnection();
conn.setRequestProperty ("Authorization", "Basic " + encoded);
PS: そのBase64Encoderを使用することは推奨されませんが、これは簡単な解決策を示すだけです。もし、その解決策を維持したいのであれば、そうするライブラリを探してください。たくさんあります。
関連
-
[解決済み】imageio.IIOException: 入力ファイルが読み込めない
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】予期しない型エラー
-
[解決済み] 403 Forbiddenと401 UnauthorizedのHTTPレスポンスの比較
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] JavaScriptでHTTPまたはHTTPSを検出し、HTTPSを強制的に実行する
-
[解決済み】HTTPとHTTPSのパフォーマンス比較
-
[解決済み] [Solved] javax.net.ssl.SSLHandshakeException の解決: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました エラー?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】javaで無効な文字定数
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない