-1

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

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

4

1 回答 1

0

我用建设者解决了这个问题。如果有人有同样的问题,这可能会有所帮助:

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);
于 2018-04-20T14:56:37.290 回答