-1

I want to be able to set header dynamically. This line works for me:

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

But it makes code unnecessary long while writing dynamic headers. I want to do something like:

WebResource webResource = client.resource(doSomethingURL);

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

webResource.post(ClientResponse.class, postData);

I tried this but it throws error for some reason:

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;
    }

Error I get is:

java.lang.ClassCastException: java.lang.Class cannot be cast to com.sun.jersey.api.client.ClientResponse

1 Answers1

0

I figured it out using builders. If anyone having same issues this might help:

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);