【问题标题】:Jersey WebResource Dynamic HeadersJersey WebResource 动态标头
【发布时间】:2018-09-27 23:55:45
【问题描述】:

我希望能够动态设置标题。这条线对我有用:

WebResource webResource = client.resource(doSomethingURL);
webResource
                .header("test1", test1)
                .post(ClientResponse.class, postData);

但是在编写动态标头时,它会使代码变得不必要。我想做类似的事情:

WebResource webResource = client.resource(doSomethingURL);

if(a>b){
        webResource.header("test1",test1);
    }else{
        webResource.header("test2",test2);
    }

webResource.post(ClientResponse.class, postData);

我试过了,但由于某种原因它抛出了错误:

ClientResponse response = getWebResource(URI + "something").post(ClientResponse.class, DataForPost);

public WebResource getWebResource(String url){
        WebResource webResource = client.resource(url);
        webResource
                .header("test1", test1);

        return webResource;
    }

我得到的错误是:

java.lang.ClassCastException:java.lang.Class 无法转换为 com.sun.jersey.api.client.ClientResponse

【问题讨论】:

  • 错误是什么?
  • java.lang.ClassCastException: java.lang.Class 不能转换为 com.sun.jersey.api.client.ClientResponse
  • 错误发生在哪里?我的意思是,哪一行?
  • ClientResponse response = getWebResource(URI + "something").post(ClientResponse.class, DataForPost);

标签: java jersey jersey-2.0 jersey-client webresource


【解决方案1】:

我使用构建器解决了这个问题。如果有人遇到同样的问题,这可能会有所帮助:

WebResource webResource = client.resource(doSomethingURL);

//Use builder object
WebResource.Builder builder =  webResource.getRequestBuilder();

if(condition){
builder = builder.header("test1", "test1String")
                 .header("test2", "test2String"); // this way you can add multiple headers.

}else{

builder = builder.header("test3", "test3String");
}

builder.post(ClientResponse.class, postData);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多