Jeff M
unread,Apr 12, 2013, 6:07:04 PM4/12/13Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to rest-a...@googlegroups.com
Hi,
I am using REST assured to test against a vendor's REST interface. There is a particular operation that requires submitting some custom headers via a PUT operation with a zero content length body. When I attempt to do this, no message is transmitted and I encounter an org.apache.http.client.ClientProtocolException, I believe that I narrowed it down to the presence of the Content-Type=*/* header which I think is being injected automatically by REST assured. I came to this conclusion by coding the REST call directly using Apache HTTP client and the call acted as expected. Additionally, I used WireShark to verify that the HttpClient code was not transmitting Content-Type, and that it was transmitting Content-Length: 0. Is there a way to prohibit the Content-Type header from being submitted? Below I included the REST assured code that threw the exception, the HttpClient code that was successful, and lastly the stack trace.
Thanks,
Jeff
REST assured code
response = RestAssured.
with().
log().all().
header("customHeader1", "SomeValue1").
header("customHeader2", "SomeValue2").
header("Content-Length", "0").
expect().
log().all().
statusCode(201).
when().
put(url);
Apache Http Client code
AbstractHttpClient httpClient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut(url);
httpPut.addHeader("customHeader1", "SomeValue1");
httpPut.addHeader("customHeader2", "SomeValue2");
HttpResponse httpResponse = null;
httpResponse = httpClient.execute(httpPut);
int statusCode = httpResponse.getStatusLine().getStatusCode();
assertThat(statusCode, equalTo(HttpStatus.SC_CREATED));
Stack Trace
org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:909)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.client.HttpClient$execute.call(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl$RestAssuredHttpBuilder.doRequest(RequestSpecificationImpl.groovy:1350)
at com.jayway.restassured.internal.http.HTTPBuilder.doRequest(HTTPBuilder.java:489)
at com.jayway.restassured.internal.http.HTTPBuilder.request(HTTPBuilder.java:438)
at com.jayway.restassured.internal.http.HTTPBuilder$request.call(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl.sendHttpRequest(RequestSpecificationImpl.groovy:926)
at com.jayway.restassured.internal.RequestSpecificationImpl.this$2$sendHttpRequest(RequestSpecificationImpl.groovy)
at com.jayway.restassured.internal.RequestSpecificationImpl$this$2$sendHttpRequest.callCurrent(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl.sendRequest(RequestSpecificationImpl.groovy:793)
at com.jayway.restassured.internal.RequestSpecificationImpl.this$2$sendRequest(RequestSpecificationImpl.groovy)
at com.jayway.restassured.internal.RequestSpecificationImpl$this$2$sendRequest.call(Unknown Source)
at com.jayway.restassured.internal.filter.RootFilter.filter(RootFilter.groovy:28)
at com.jayway.restassured.filter.Filter$filter.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at com.jayway.restassured.filter.Filter$filter$0.call(Unknown Source)
at com.jayway.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:47)
at com.jayway.restassured.filter.log.StatusCodeBasedLoggingFilter.filter(StatusCodeBasedLoggingFilter.java:95)
at com.jayway.restassured.filter.log.ResponseLoggingFilter.filter(ResponseLoggingFilter.java:31)
at com.jayway.restassured.filter.Filter$filter$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at com.jayway.restassured.filter.Filter$filter$0.call(Unknown Source)
at com.jayway.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:47)
at com.jayway.restassured.filter.log.RequestLoggingFilter.filter(RequestLoggingFilter.java:134)
at com.jayway.restassured.filter.Filter$filter$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at com.jayway.restassured.filter.Filter$filter.call(Unknown Source)
at com.jayway.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:47)
at com.jayway.restassured.filter.FilterContext$next.call(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl.invokeFilterChain(RequestSpecificationImpl.groovy:731)
at com.jayway.restassured.internal.RequestSpecificationImpl$invokeFilterChain.callCurrent(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1115)
at com.jayway.restassured.internal.RequestSpecificationImpl.this$2$applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy)
at com.jayway.restassured.internal.RequestSpecificationImpl$this$2$applyPathParamsAndSendRequest.callCurrent(Unknown Source)
at com.jayway.restassured.internal.RequestSpecificationImpl.put(RequestSpecificationImpl.groovy:137)
at com.jayway.restassured.specification.RequestSender$put.call(Unknown Source)
at com.jayway.restassured.internal.ResponseSpecificationImpl.put(ResponseSpecificationImpl.groovy:232)