【问题标题】:Jersey client request to web-serviceJersey 客户端对 Web 服务的请求
【发布时间】:2015-11-17 14:45:19
【问题描述】:

我正在尝试通过 jersey 客户端请求网络服务:

WebResource service = client.resource(UriBuilder.fromUri("http://localhost:8080/jersey-example-new/").build());
System.out.println(service.path("rs/").path("account/details/1").accept(MediaType.APPLICATION_JSON).get(String.class));

但我明白了:

GET http://localhost:8080/jersey-example-new/rs/account/details/1 returned a response status of 406 Not Acceptable

请注意,url 路径 http://localhost:8080/jersey-example-new/rs/account/details/1 在浏览器中有效。 java客户端请求有什么问题?

端点代码:

@Path("account")
public class AccountDetailsService {

    @GET
    @Path("/details/{param}")
    @Produces(MediaType.TEXT_PLAIN)
    public Response getAccountDetails(@PathParam("param") String accountName) {
        String output = "Account Name : " + accountName;
        return Response.status(200).entity(output).build();
    }
}

【问题讨论】:

  • 意思是,您在响应中返回的数据不在MediaType.APPLICATION_JSON 中。检查生成输出的方法。
  • 显示你的端点方法的代码。
  • @CássioMazzochiMolin 看到问题

标签: java web-services rest jersey jersey-client


【解决方案1】:

你应该改变

System.out.println(service.path("rs/").path("account/details/1").accept(MediaType.APPLICATION_JSON).get(String.class));

System.out.println(service.path("rs/").path("account/details/1").accept(MediaType.TEXT_PLAIN).get(String.class));

您只生成 TEXT_PLAIN,但您请求媒体类型 APPLICATION_JSON(通过接受标头),这就是您得到响应的原因,即请求不可接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多