HttpURLConnection の setRequestProperty() メソッドを使用してヘッダーを設定できないのはなぜですか?

Barbara Streisand
リリース: 2024-11-09 09:24:02
オリジナル
401 人が閲覧しました

Why Am I Unable to Set Headers Using HttpURLConnection's setRequestProperty() Method?

HttpURLConnection リクエストにヘッダーを追加する方法

HTTP リクエストを操作する場合、リクエストの認証、追加データの送信、そしてサーバーの動作を制御します。ただし、ユーザーは HttpURLConnection の setRequestProperty() メソッドで問題に遭遇し、その有効性を疑問視しています。この記事では、この問題を詳しく掘り下げ、解決策を提供します。

提供されたコードは、setRequestProperty() を使用して HTTP リクエストに Authorization ヘッダーを追加する試みを示しています。ただし、サーバーはヘッダーを受信しないと報告されています。

これに対処するには、ヘッダーが正しく送信されているかどうかを確認することが重要です。考えられる問題の 1 つは、ヘッダーが設定される前にリクエスト本文がすでに書き込まれていることです。このような場合、ヘッダーがリクエストに含まれない可能性があります。これを解決するには、出力が書き込まれる前にヘッダーを設定する必要があります。

または、提供されている解決策で示されているように、別のアプローチを使用してヘッダーを追加することもできます。

URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();

String userCredentials = "username:password";
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));

myURLConnection.setRequestProperty ("Authorization", basicAuth);
myURLConnection.setRequestMethod("POST");
myURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
myURLConnection.setRequestProperty("Content-Length", "" + postData.getBytes().length);
myURLConnection.setRequestProperty("Content-Language", "en-US");
myURLConnection.setUseCaches(false);
myURLConnection.setDoInput(true);
myURLConnection.setDoOutput(true);
ログイン後にコピー

Thisコードは POST リクエストを構成し、Base64 エンコードを使用して正しい構文で Authorization ヘッダーを手動で設定します。ヘッダーを明示的に設定することで、ヘッダーがリクエストに確実に含まれるようになります。さらに、Content-Length ヘッダーも設定されます。これは、本文を含む POST リクエストにとって重要です。

これらのソリューションを実装することで、ユーザーは HttpURLConnection リクエストにカスタム ヘッダーを効果的に追加でき、適切なリクエストの認証と制御が可能になります。

以上がHttpURLConnection の setRequestProperty() メソッドを使用してヘッダーを設定できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート