HttpComponent3Response.java
package com.foxinmy.weixin4j.http.support.apache3;
import java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethod;
import com.foxinmy.weixin4j.http.AbstractHttpResponse;
import com.foxinmy.weixin4j.http.HttpHeaders;
import com.foxinmy.weixin4j.http.HttpStatus;
import com.foxinmy.weixin4j.http.HttpVersion;
/**
* HttpComponent3 Response:Requires commons-httpclient 3.0 or higher
*
* @className HttpComponent3Response
* @author jinyu(foxinmy@gmail.com)
* @date 2015年8月17日
* @since JDK 1.6
* @see
*/
public class HttpComponent3Response extends AbstractHttpResponse {
private final HttpMethod httpMethod;
private HttpHeaders headers;
private HttpVersion protocol;
private HttpStatus status;
public HttpComponent3Response(HttpMethod httpMethod) throws IOException {
super(httpMethod.getResponseBody());
this.httpMethod = httpMethod;
}
@Override
public HttpHeaders getHeaders() {
if (headers == null) {
headers = new HttpHeaders();
Header[] headers = httpMethod.getResponseHeaders();
for (Header header : headers) {
this.headers.add(header.getName(), header.getValue());
}
}
return headers;
}
@Override
public HttpVersion getProtocol() {
org.apache.commons.httpclient.HttpVersion version = httpMethod
.getParams().getVersion();
if (version == null) {
return null;
}
Header connection = httpMethod.getResponseHeader("Connection");
if (protocol == null) {
protocol = new HttpVersion("HTTP", version.getMajor(),
version.getMinor(), connection != null
&& KEEP_ALIVE.equalsIgnoreCase(connection
.getValue()));
}
return protocol;
}
@Override
public HttpStatus getStatus() {
if (status == null) {
status = new HttpStatus(httpMethod.getStatusCode(),
httpMethod.getStatusText());
}
return status;
}
@Override
public void close() {
httpMethod.releaseConnection();
//Protocol.unregisterProtocol("https");
}
}