[英]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.