1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.http.impl.io;
29
30 import java.io.IOException;
31
32 import org.apache.http.HttpException;
33 import org.apache.http.HttpResponse;
34 import org.apache.http.HttpResponseFactory;
35 import org.apache.http.NoHttpResponseException;
36 import org.apache.http.ParseException;
37 import org.apache.http.StatusLine;
38 import org.apache.http.config.MessageConstraints;
39 import org.apache.http.impl.DefaultHttpResponseFactory;
40 import org.apache.http.io.SessionInputBuffer;
41 import org.apache.http.message.LineParser;
42 import org.apache.http.message.ParserCursor;
43 import org.apache.http.params.HttpParams;
44 import org.apache.http.util.Args;
45 import org.apache.http.util.CharArrayBuffer;
46
47
48
49
50
51
52
53 @SuppressWarnings("deprecation")
54 public class DefaultHttpResponseParser extends AbstractMessageParser<HttpResponse> {
55
56 private final HttpResponseFactory responseFactory;
57 private final CharArrayBuffer lineBuf;
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 @Deprecated
73 public DefaultHttpResponseParser(
74 final SessionInputBuffer buffer,
75 final LineParser lineParser,
76 final HttpResponseFactory responseFactory,
77 final HttpParams params) {
78 super(buffer, lineParser, params);
79 this.responseFactory = Args.notNull(responseFactory, "Response factory");
80 this.lineBuf = new CharArrayBuffer(128);
81 }
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 public DefaultHttpResponseParser(
97 final SessionInputBuffer buffer,
98 final LineParser lineParser,
99 final HttpResponseFactory responseFactory,
100 final MessageConstraints constraints) {
101 super(buffer, lineParser, constraints);
102 this.responseFactory = responseFactory != null ? responseFactory :
103 DefaultHttpResponseFactory.INSTANCE;
104 this.lineBuf = new CharArrayBuffer(128);
105 }
106
107
108
109
110 public DefaultHttpResponseParser(
111 final SessionInputBuffer buffer,
112 final MessageConstraints constraints) {
113 this(buffer, null, null, constraints);
114 }
115
116
117
118
119 public DefaultHttpResponseParser(final SessionInputBuffer buffer) {
120 this(buffer, null, null, MessageConstraints.DEFAULT);
121 }
122
123 @Override
124 protected HttpResponse parseHead(
125 final SessionInputBuffer sessionBuffer)
126 throws IOException, HttpException, ParseException {
127
128 this.lineBuf.clear();
129 final int readLen = sessionBuffer.readLine(this.lineBuf);
130 if (readLen == -1) {
131 throw new NoHttpResponseException("The target server failed to respond");
132 }
133
134 final ParserCursorursor.html#ParserCursor">ParserCursor cursor = new ParserCursor(0, this.lineBuf.length());
135 final StatusLine statusline = lineParser.parseStatusLine(this.lineBuf, cursor);
136 return this.responseFactory.newHttpResponse(statusline, null);
137 }
138
139 }