编程语言
首页 > 编程语言> > java-泽西岛客户端API WebResource accept()无法正确设置MIME标头?

java-泽西岛客户端API WebResource accept()无法正确设置MIME标头?

作者:互联网

public static WebResource createWebResource()
{
    final ClientConfig  cc = new DefaultClientConfig();
    final Client        c = Client.create(cc);
    final WebResource   wr = c.resource("http://localhost:19801/wtg_inventory_war/wtg/rest")
                                  .path(inv);
    return wr;
}

public void tester()
{
final WebResource  wr = JaxrsClientUtil.createWebResource()
                                 .path("wtg-service");

    wr.accept(MediaType.APPLICATION_XML);

String   response = wr.path("get-services")
                          .type(MediaType.APPLICATION_XML)
                          .get(String.class);
    System.out.println(response);
}

服务器端:

@Path("get-services")
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response handleFindInventoryServices(
@Context WtgSpringContainer     ioc  // Spring config for service operations
)
{
    System.out.println("Got a service listing request...");
    LOGGER.info("Got a service listing request");

    Get the app specific data formatted in JAXB XML or JSON...

    .
    .
    .


    return Response.ok(msg).build();
}

不管客户端为可接受的媒体类型设置了什么,JSON都会回来吗?在-HAccept:application / json或application / xml中使用curl可以正常工作.我想在不更改服务器端的情况下同时测试我的服务器.

关于为什么我不能强制服务器将XML作为首选的MIME类型的任何指示?

解决方法:

大卫,我知道了.你做的和我做的一样…

WebResource.accept(..)是一个静态方法,实际上是在返回正确的接受参数的情况下向您都返回了一个我们都忽略的WebResource.Builder实例.

从以下位置更改代码后:

WebResource res = c.resource("http://localhost:5984/");
res.accept(MediaType.APPLICATION_JSON_TYPE);
System.out.println(res.get(String.class));

至:

WebResource res = c.resource("http://localhost:5984/");
Builder builder = res.accept(MediaType.APPLICATION_JSON_TYPE);
System.out.println(builder.get(String.class));

一切开始正常工作,正确的“ Accept”标头已发送到服务器.

希望能有所帮助.

标签:jersey,java
来源: https://codeday.me/bug/20191208/2088756.html