簡體   English   中英

Java HTTP 請求頭的轉義/編碼

[英]Escaping/Encoding of Header for Java HTTP request

我正在使用名為“授權”的標頭字段中提供的 API 密鑰執行一個簡單的 Java HttpGet 請求。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet("https://someURL.com");
get.setHeader("authorization", "myAPIKEyhere...");
CloseableHttpResponse = response = httpClient.execute(get);

如果我在本地運行代碼(以及在 Postman 中),它工作得很好,但是如果我將它部署到我的服務器(谷歌雲),我會收到授權錯誤。 由於 API 密鑰包含一些特殊字符,例如“。” 或“:”我想知道我是否需要轉義或編碼某些東西並使用URLEncode和轉義,但沒有任何幫助。

這是一個示例 API 密鑰:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfdG9rZW5faWQzOiJjOGJhNDc0My0wNDgyLTQ2NWEtYmE2NS0wOGYzNTk1YTljNmIiLCJzY29wZSI6WyJzY29wZV9leGNoYW5nZV9sZWRnZXJfcmVhZCIsInNjb3BlX2V4Y2hhbmdlX2Z1bmRpbmdfcmVhZCIsInNjb3BlX2V4Y2hhbmdlX2Z1bnRpbmdfd3JpdGUiXSwidXNlcl9pZCI6Ijc5N2ZhY2EyLWQ2YzgtNGQ2Ny1hNzUzLTkyYzI2MjFkM2U1MyJ9.0h6w3nX4w3HO6r2DJl0W75fQ4VM8rItRgBkwQtqee88.V2:b4b82e785b0aaf1dcbd3c89e16b92532db3abc0b5c4115436b1fae31246aba430

也許它的長度是一個問題? 有什么建議可以解決這個問題嗎?

嘗試使用java.net.URLEncoder.encode()來轉義任何非法字符。

像這樣:

get.setHeader("authorization", URLEncoder.encode("myAPIKEyhere...", "UTF-8"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM