泽西REST客户端发布授权

时间:2018-03-13 13:03:11

标签: jersey http-post authorization jersey-client

我在Java Spring MVC Web应用程序中使用Jersey 1.9。我正在尝试发布一个帖子请求,我必须设置两个标头值 - 授权和内容类型。我能够使用postman REST客户端成功发布帖子。我在网上尝试了很多解决方案,但我得到的回复是401-Authorization失败。以下是代码是我使用的代码:

ClientConfig config = new DefaultClientConfig();
   Client client = Client.create(config);
WebResource webResource = client.resource("https://api.constantcontact.com/v2/contacts?action_by=ACTION_BY_OWNER&api_key=tntkzy2drrmbwnhdv12s36vq");
WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON);
builder.header(HttpHeaders.AUTHORIZATION, "Bearer 28ac08bc-58d5-426e-b811-3b1d1e505a9b");
ClientResponse responseMsg = webResource
     .post(ClientResponse.class, jsonString);
  responseMsg.getEntity(String.class);

添加邮差截图: enter image description here

1 个答案:

答案 0 :(得分:0)

经过一些研究,我终于找到了我的案例中遗漏的内容,根据我从评论中得到的建议,我从URL中删除了查询参数并将它们添加为查询参数。然后,ANd将所有查询参数添加到多值映射,并将此多值映射用作查询参数。我的代码修改如下:

MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("action_by", "ACTION_BY_OWNER");
queryParams.add("api_key", apiKey);
WebResource webResource = client.resource(url);
ClientResponse responseMsg = webResource
.queryParams(queryParams)
.header("Content-Type", "application/json;charset=UTF-8")
.header("Authorization", "Bearer "+authorisationToken.trim())
.post(ClientResponse.class, jsonString);
responseMsg.getEntity(String.class);

不知何故,当存在多个查询参数时,添加标题不起作用,但是当将参数添加为单个多值映射时,一切都有效。希望这有助于某人。