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 サイトの他の関連記事を参照してください。