HTTPCLIENT-981: CachingHttpClient returns a 411 respones when executing a POST (HttpPost) request

Contributed by Joe Campbell <joseph.r.campbell at gmail.com>


git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@989060 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Oleg Kalnichevski 2010-08-25 12:28:00 +00:00
parent 68c8b4b1ee
commit 29a4612386
2 changed files with 20 additions and 19 deletions

View File

@ -63,12 +63,12 @@ class RequestProtocolCompliance {
public List<RequestProtocolError> requestIsFatallyNonCompliant(HttpRequest request) {
List<RequestProtocolError> theErrors = new ArrayList<RequestProtocolError>();
RequestProtocolError anError = requestContainsBodyButNoLength(request);
if (anError != null) {
theErrors.add(anError);
}
//RequestProtocolError anError = requestContainsBodyButNoLength(request);
//if (anError != null) {
// theErrors.add(anError);
//}
anError = requestHasWeakETagAndRange(request);
RequestProtocolError anError = requestHasWeakETagAndRange(request);
if (anError != null) {
theErrors.add(anError);
}
@ -330,18 +330,6 @@ class RequestProtocolCompliance {
return null;
}
private RequestProtocolError requestContainsBodyButNoLength(HttpRequest request) {
if (!(request instanceof HttpEntityEnclosingRequest)) {
return null;
}
if (request.getFirstHeader(HTTP.CONTENT_LEN) != null
&& ((HttpEntityEnclosingRequest) request).getEntity() != null)
return null;
return RequestProtocolError.BODY_BUT_NO_LENGTH_ERROR;
}
private RequestProtocolError requestContainsNoCacheDirectiveWithFieldName(HttpRequest request) {
for(Header h : request.getHeaders("Cache-Control")) {
for(HeaderElement elt : h.getElements()) {

View File

@ -49,6 +49,7 @@ import org.easymock.Capture;
import org.easymock.classextension.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
/**
@ -146,8 +147,14 @@ public class TestProtocolDeviations {
* receiving a valid Content-Length."
*
* http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4
*
* 8/23/2010 JRC - This test has been moved to Ignore. The caching client
* was set to return status code 411 on a missing content-length header when
* a request had a body. It seems that somewhere deeper in the client stack
* this header is added automatically for us - so the caching client shouldn't
* specifically be worried about this requirement.
*/
@Test
@Ignore
public void testHTTP1_1RequestsWithBodiesOfKnownLengthMustHaveContentLength() throws Exception {
BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/",
HTTP_1_1);
@ -180,8 +187,14 @@ public class TestProtocolDeviations {
* needs to happen in order to compute the content length.
*
* In any event, this test just captures the behavior required.
*
* 8/23/2010 JRC - This test has been moved to Ignore. The caching client
* was set to return status code 411 on a missing content-length header when
* a request had a body. It seems that somewhere deeper in the client stack
* this header is added automatically for us - so the caching client shouldn't
* specifically be worried about this requirement.
*/
@Test
@Ignore
public void testHTTP1_1RequestsWithUnknownBodyLengthAreRejectedOrHaveContentLengthAdded()
throws Exception {
BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/",