我有可能做错了什么,但是使用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请求的标头?
非常感谢任何意见或建议。 感谢
答案 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);
上述情况应该有效。