1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.archive.httpclient;
24
25 import java.io.IOException;
26
27 import org.apache.commons.httpclient.HttpConnection;
28 import org.apache.commons.httpclient.HttpException;
29 import org.apache.commons.httpclient.HttpState;
30 import org.apache.commons.httpclient.methods.PostMethod;
31 import org.archive.util.HttpRecorder;
32
33
34 /***
35 * Override of PostMethod that marks the passed HttpRecorder w/ the transition
36 * from HTTP head to body and that forces a close on the responseConnection.
37 *
38 * This is a copy of {@link HttpRecorderGetMethod}. Only difference is the
39 * parent subclass.
40 *
41 * @author stack
42 * @version $Date: 2005-04-07 21:44:47 +0000 (Thu, 07 Apr 2005) $ $Revision: 3351 $
43 */
44 public class HttpRecorderPostMethod extends PostMethod {
45 /***
46 * Instance of http recorder method.
47 */
48 protected HttpRecorderMethod httpRecorderMethod = null;
49
50
51 public HttpRecorderPostMethod(String uri, HttpRecorder recorder) {
52 super(uri);
53 this.httpRecorderMethod = new HttpRecorderMethod(recorder);
54 }
55
56 protected void readResponseBody(HttpState state, HttpConnection connection)
57 throws IOException, HttpException {
58
59 this.httpRecorderMethod.markContentBegin(connection);
60 super.readResponseBody(state, connection);
61 }
62
63 protected boolean shouldCloseConnection(HttpConnection conn) {
64
65
66
67 return true;
68 }
69
70 public int execute(HttpState state, HttpConnection conn)
71 throws HttpException, IOException {
72
73
74
75
76
77 this.httpRecorderMethod.setConnection(conn);
78 return super.execute(state, conn);
79 }
80
81 protected void addProxyConnectionHeader(HttpState state, HttpConnection conn)
82 throws IOException, HttpException {
83 super.addProxyConnectionHeader(state, conn);
84 this.httpRecorderMethod.handleAddProxyConnectionHeader(this);
85 }
86 }