如何向HttpURLConnection 請求添加標頭
處理HTTP 請求時,添加自訂標頭對於驗證請求、發送附加標頭、並控制伺服器行為。然而,使用者在 HttpURLConnection 中的 setRequestProperty() 方法中遇到了問題,質疑其有效性。本文深入研究了該問題並提供了解決方案。
提供的程式碼示範如何嘗試使用 setRequestProperty() 將授權標頭新增至 HTTP 請求。然而,據報道伺服器沒有收到標頭。
要解決這個問題,檢查標頭是否正確發送非常重要。一個可能的問題是在設定標頭之前請求正文已寫入。在這種情況下,標頭可能不會包含在請求中。若要解決此問題,應在寫入任何輸出之前設定標頭。
或者,可以使用不同的方法來添加標頭,如提供的解決方案中所示:
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 編碼以正確的語法手動設定授權標頭。透過明確設定標頭,可以確保它們包含在請求中。此外,還設定了 Content-Length 標頭,這對於帶有正文的 POST 請求非常重要。
透過實作這些解決方案,使用者可以有效地將自訂標頭新增至其 HttpURLConnection 要求中,從而實現正確的請求驗證和控制。
以上是為什麼我無法使用 HttpURLConnection 的 setRequestProperty() 方法設定標頭?的詳細內容。更多資訊請關注PHP中文網其他相關文章!