import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.CookieSpec;
import org.apache.http.cookie.CookieSpecProvider;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.cookie.BestMatchSpecFactory;
import org.apache.http.impl.cookie.BrowserCompatSpec;
import org.apache.http.impl.cookie.BrowserCompatSpecFactory;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
public class HttpClientObject {
private CloseableHttpClient httpClient = null;
private HttpResponse response;
private HttpPost httpPost = null;
private HttpGet httpGet = null;
private String paramKey = "";
private String paramValue = "";
private String responseString;
public void setParamKey(String paramKey) {
this.paramKey = paramKey;
}
public void setParamValue(String paramValue) {
this.paramValue = paramValue;
}
public String getResponseString() {
return responseString;
}
public HttpClientObject() {
this.getHttpClient();
}
private List<NameValuePair> getRequestBody() {
NameValuePair pair1 = new BasicNameValuePair(paramKey, paramValue);
List<NameValuePair> pairList = new ArrayList<NameValuePair>();
pairList.add(pair1);
return pairList;
}
public void submit() {
try {
if (httpPost != null) {
response = httpClient.execute(httpPost);
httpPost = null;
}
if (httpGet != null) {
response = httpClient.execute(httpGet);
httpGet = null;
}
this.response();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void response() {
try {
HttpEntity httpEntity = response.getEntity();
responseString = EntityUtils.toString(httpEntity);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setPost(String httpUrl) {
try {
HttpEntity requestHttpEntity = new UrlEncodedFormEntity(
this.getRequestBody());
httpPost = new HttpPost(httpUrl);
httpPost.setEntity(requestHttpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
public void setGet(String httpUrl) {
httpGet = new HttpGet(httpUrl);
}
private void getHttpClient() {
BasicCookieStore cookieStore = new BasicCookieStore();
CookieSpecProvider easySpecProvider = new CookieSpecProvider() {
public CookieSpec create(HttpContext context) {
return new BrowserCompatSpec() {
@Override
public void validate(Cookie cookie, CookieOrigin origin)
throws MalformedCookieException {
// Oh, I am easy
}
};
}
};
Registry<CookieSpecProvider> r = RegistryBuilder
.<CookieSpecProvider> create()
.register(CookieSpecs.BEST_MATCH, new BestMatchSpecFactory())
.register(CookieSpecs.BROWSER_COMPATIBILITY,
new BrowserCompatSpecFactory())
.register("easy", easySpecProvider).build();
RequestConfig requestConfig = RequestConfig.custom()
.setCookieSpec("easy").setSocketTimeout(10000)
.setConnectTimeout(10000).build();
httpClient = HttpClients.custom().setDefaultCookieSpecRegistry(r)
.setDefaultRequestConfig(requestConfig)
.setDefaultCookieStore(cookieStore).build();
}
}
调用时:
HttpClientObject hco = new HttpClientObject();
hco.setGet(url);
hco.submit();
String responseContent = hco.getResponseString();