Java HttpUrlConnection - 401带有身份验证标头

时间:2015-12-01 01:38:06

标签: java http httpurlconnection

我有可能做错了什么,但是使用Curl / Rest客户端我能够使用Oauth2生成的令牌向服务器发送http请求,详情请参阅:&lt; < / p>

url: https://blah.blah
Authorization: OAuth <oauth token>
Accept: application/blah (I'm hiding some of the details...)

这可以正常使用Curl / Rest并且我按预期收回JSON对象。但是,在Java中执行此操作时,我每次都会获得401。我猜测我不知道如何以某种方式附加标题,但我无法理解。

url = new URL(baseUrl+ reqUrl);
    System.out.println("Querying API with the following url:" + url.toString());

    httpReq = (HttpURLConnection) url.openConnection();
    httpReq.addRequestProperty("Authorization: OAuth ", token.trim());
    httpReq.addRequestProperty("Accept", "application/blah...");
    httpReq.connect();

我猜测我的标题设置错误,但我无法理解。有没有更好的方法来实现http请求的标头?

非常感谢任何意见或建议。 感谢

2 个答案:

答案 0 :(得分:1)

你在curl中设置授权: OAuth ,而在代码中我看到你正在做授权:我看到OAuth丢失了,我希望这个不是问题。

答案 1 :(得分:0)

不要包括&#34; OAuth&#34;在addRequestProperty()或setRequestProperty()的密钥规范中。所以这是不正确的:

httpReq.addRequestProperty("Authorization: OAuth ", token.trim()); 

相反,它应该是价值的一部分:

String header = "OAuth oauth_token=\"ConsumerKey%3D...\",oauth_consumer_key=\"...";
httpReq.setRequestProperty("Authorization", header);

上述情况应该有效。