package com.bao.lc.client; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.RedirectStrategy; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.params.CookiePolicy; import org.apache.http.client.params.HttpClientParams; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HttpContext; import com.bao.lc.client.impl.PostRedirectStrategy; import com.bao.lc.client.impl.RequestReferer; import com.bao.lc.client.impl.RequestResetRedirectChain; import com.bao.lc.client.params.MiscParams; public class BrowserClient extends DefaultHttpClient { public static final String AGENT_IE7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; TEN)"; public static final String AGENT_IE8 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8; FDM; .NET4.0C)"; public static final String AGENT_CHROME = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2"; public static final String AGENT_FIREFOX = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)"; /** * Creates a new HTTP client from parameters and a connection manager. * * @param params * the parameters * @param conman * the connection manager */ public BrowserClient(final ClientConnectionManager conman, final HttpParams params) { super(conman, params); init(); } /** * @since 4.1 */ public BrowserClient(final ClientConnectionManager conman) { super(conman, null); init(); } public BrowserClient(final HttpParams params) { super(null, params); init(); } public BrowserClient() { super(null, null); init(); } protected void init() { //Parameters HttpParams params = getParams(); //Set Agent HttpProtocolParams.setUserAgent(params, AGENT_IE8); HttpClientParams.setCookiePolicy(params, CookiePolicy.BROWSER_COMPATIBILITY); //Set redirect strategy RedirectStrategy redirectStrategy = new PostRedirectStrategy(); setRedirectStrategy(redirectStrategy); MiscParams.setRedirectStrategy(params, redirectStrategy); //Interceptors addRequestInterceptor(new RequestReferer()); addRequestInterceptor(new RequestResetRedirectChain()); } protected ClientConnectionManager createClientConnectionManager() { return new ThreadSafeClientConnManager(); } public HttpResponse execute(RequestBuilder builder, HttpContext context) throws ClientProtocolException, IOException { HttpUriRequest request = builder.create(); HttpResponse rsp = execute(request, context); MiscParams.setReferer(getParams(), request.getURI().toString()); return rsp; } public HttpResponse execute(RequestBuilder builder) throws ClientProtocolException, IOException { return execute(builder, (HttpContext) null); } public HttpResponse execute(String uriString, HttpContext context) throws ClientProtocolException, IOException { RequestBuilder builder = new RequestBuilder(); builder.uriStr(uriString); return execute(builder, context); } public HttpResponse execute(String uriString) throws ClientProtocolException, IOException { return execute(uriString, (HttpContext) null); } }