01: /*
02: * ====================================================================
03: *
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: * ====================================================================
19: *
20: * This software consists of voluntary contributions made by many
21: * individuals on behalf of the Apache Software Foundation. For more
22: * information on the Apache Software Foundation, please see
23: * <http://www.apache.org/>.
24: *
25: * [Additional notices, if required by prior licensing conditions]
26: *
27: */
28: package org.apache.commons.httpclient;
29:
30: import java.io.IOException;
31: import org.apache.commons.httpclient.methods.PostMethod;
32:
33: /**
34: * HTTP POST methid intended to simulate side-effects of
35: * interaction with non-compiant HTTP servers or proxies
36: *
37: * @author Oleg Kalnichevski
38: */
39:
40: public class NoncompliantPostMethod extends PostMethod {
41:
42: public NoncompliantPostMethod() {
43: super ();
44: }
45:
46: public NoncompliantPostMethod(String uri) {
47: super (uri);
48: }
49:
50: /**
51: * NoncompliantPostMethod class skips "Expect: 100-continue"
52: * header when sending request headers to an HTTP server.
53: *
54: * <p>
55: * That makes the server expect the request body to follow
56: * immediately after the request head. The HTTP server does not
57: * send status code 100 expected by the client. The client should
58: * be able to recover gracefully by sending the request body
59: * after a defined timeout without having received "continue"
60: * code.
61: * </p>
62: */
63: protected void writeRequestHeaders(HttpState state,
64: HttpConnection conn) throws IOException, HttpException {
65: addRequestHeaders(state, conn);
66: Header[] headers = getRequestHeaders();
67: for (int i = 0; i < headers.length; i++) {
68: Header header = headers[i];
69: // Write all the headers but "Expect"
70: if (!header.getName().equalsIgnoreCase("Expect")) {
71: conn.print(header.toExternalForm(), "US-ASCII");
72: }
73: }
74: }
75:
76: }
|