【发布时间】:2019-07-08 06:22:24
【问题描述】:
我正在尝试使用 HttpURLConnection 调用 rest web 服务。我想添加授权标头 OAuth1。我总是收到 401 响应。
我已经通过 SOAPUI 或 POSTMAN 成功使用了这个 ws。 我构建的授权字符串需要编码吗?
String oautStr = "OAuth oauth_consumer_key=\"1234\",oauth_token=\"1dw3\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1562334372\",oauth_nonce=\"wf4ffr\",oauth_version=\"1.0\",oauth_signature=\"34r4ff\"";
URL url = new URL(urlStr);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestProperty("Authorization", oautStr);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("{\"user\":\"1203\",\"name\":\"test\",,\"test\":{}}");
//System.out.println(con.getRequestProperty("Authorization"));
osw.flush();
osw.close();
os.close();
【问题讨论】:
-
我已经通过我的java客户端成功使用了ws。但是,我确实复制了 POSTMAN 中生成的授权标头内容。我认为问题在于签署我的请求以生成对 WS 的有效请求。有人知道程序吗?如果我没记错的话,我会使用密钥(应用程序和令牌密钥)来签署基本字符串。我找到了本指南oauth1.wp-api.org/docs/basics/Signing.html,但没有 java 示例可以帮助我