首頁 > Java > java教程 > 為什麼我無法使用 HttpURLConnection 的 setRequestProperty() 方法設定標頭?

為什麼我無法使用 HttpURLConnection 的 setRequestProperty() 方法設定標頭?

Barbara Streisand
發布: 2024-11-09 09:24:02
原創
441 人瀏覽過

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

如何向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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板