我必须发送一个 Get 请求来请求带有这些标头的令牌 URL:
Content-Type: application/x-www-form-urlencoded
Authorization:
OAuth oauth_consumer_key="your_consumer_key",
oauth_nonce="random_string_or_timestamp",
oauth_signature="your_consumer_secret&",
oauth_signature_method="PLAINTEXT",
oauth_timestamp="current_timestamp",
oauth_callback="your_callback"
User-Agent: some_user_agent
我已经尝试过这段代码:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization: OAuth oauth_consumer_key", "BaeUqWMTmCxjeJj9mkJr");
conn.setRequestProperty("Authorization: oauth_nonce", "random_string_or_timestamp");
conn.setRequestProperty("Authorization: oauth_signature", "ZWglyBtJasnJBqVndzyduYJggCduKeYks&");
conn.setRequestProperty("Authorization: oauth_timestamp", String.valueOf(new Date()));
conn.setRequestProperty("Authorization: oauth_callback", "http://localhost:8080");
conn.setRequestProperty("User-Agent", "test");
int statusCode = conn.getResponseCode();
System.out.println("Response from WA Gateway: \n");
System.out.println("Status Code: " + statusCode);
BufferedReader br = new BufferedReader(new InputStreamReader(
(statusCode == 200) ? conn.getInputStream() : conn.getErrorStream()
));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
但我收到此错误:
Illegal character(s) in message header field: Authorization: OAuth oauth_consumer_key
答案 0 :(得分:0)
问题在于您没有正确地形成您的请求。由于它是 OAuth 请求的 GET
版本,下面是 RFC5849 中有关如何执行此操作的示例
GET /example/path?oauth_consumer_key=0685bd9184jfhq22& oauth_token=ad180jjd733klru7&oauth_signature_method=HM AC-SHA1&oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY% 3D&oauth_timestamp=137131200&oauth_nonce=4572616e48616 d6d65724c61686176&oauth_version=1.0 HTTP/1.1
Sp,按照上面的格式在 Authorization
中设置一个 setRequestProperty
标头:
...
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String yourUrl = "http://yourwebsite.com";
String currentSeconds = 1618496867; // current seconds
String authorizationValue = "OAuth oauth_consumer_key=\"BaeUqWMTmCxjeJj9mkJr\",
oauth_nonce=\"1618496867\",
oauth_signature=\"ZWglyBtJasnJBqVndzyduYJggCduKeYks&\",
oauth_signature_method=\"PLAINTEXT\",
oauth_timestamp=\"1618496867\",
oauth_callback=\"http://localhost:8080\""
conn.setRequestProperty("Authorization", authorizationValue);
conn.setDoOutput(true);
conn.setRequestMethod("GET");
...
我使用 Postman 客户端为我的 OAuth 身份验证服务器测试了一个类似的请求,并且运行良好。
答案 1 :(得分:0)