带有特殊字符java的http请求头

时间:2017-05-24 08:52:31

标签: java request http-headers postman http-get

我试图将httpGet与标头中具有非法字符的令牌一起使用。 我在java中得到了错误401,在Postman中我成功得到了响应。

HttpGet httpGet = new HttpGet(SF_DEFAULT_HOST + REPORT_URL);
header.add("Authorization", "OAuth " + accessToken);;
JSONObject jsonUserInfo = WebClient.fetch(httpGet);

在这种情况下,令牌等于=> 00D90000000sYg0!ARkAQGLOKJhVhT3O_7JnIZTP3UGctmzW9jXa3HtD6li8bS_eEwhhQTRfsC_ayoQLgcST6fX6p6jU49MQpe.lGEZxFLuzccLn

Picture from postman with request success response.

来自邮递员的图片,请求成功回复。

1 个答案:

答案 0 :(得分:0)

您正在尝试使用非US-ASCII字符传递令牌,这是您遇到错误的原因。在将请求添加到请求之前,您需要对标头进行编码。

进行编码的Java类是java.net.URLEncoder。

注意:RFC 2616表示您只能在HTTP标头中使用US-ASCII。其他字符必须编码。

在C#中,有直接的方法来添加非US-ASCII字符的标记。

HttpClient queryClient = new HttpClient();

queryClient.DefaultRequestHeaders.TryAddWithoutValidation(“授权”,“承载”+ AuthToken);