浏览 2968 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-15
ComponentsThis example demonstrates how to send an HTTP request via a proxy.
请求通过一个代理
这个例子示范怎样去发送一个HTTP请求通过一个代理
package cn.lake.util; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; import org.apache.http.client.HttpClient; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.scheme.SocketFactory; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.message.BasicHttpRequest; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.util.EntityUtils; /** * How to send a request via proxy using {@link HttpClient HttpClient}. * * @author <a href="mailto:rolandw at apache.org">Roland Weber</a> * * * <!-- empty lines above to avoid 'svn diff' context problems --> * @version $Revision$ * * @since 4.0 */ public class ClientExecuteProxy { /** * The default parameters. * Instantiated in {@link #setup setup}. */ private static HttpParams defaultParameters = null; /** * The scheme registry. * Instantiated in {@link #setup setup}. */ private static SchemeRegistry supportedSchemes; /** * Main entry point to this example. * * @param args ignored */ public final static void main(String[] args) throws Exception { // make sure to use a proxy that supports CONNECT final HttpHost target = new HttpHost("issues.apache.org", 443, "https"); final HttpHost proxy = new HttpHost("127.0.0.1", 8666, "http"); setup(); // some general setup HttpClient client = createHttpClient(); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); HttpRequest req = createRequest(); System.out.println("executing request to " + target + " via " + proxy); HttpEntity entity = null; try { HttpResponse rsp = client.execute(target, req); entity = rsp.getEntity(); System.out.println("----------------------------------------"); System.out.println(rsp.getStatusLine()); Header[] headers = rsp.getAllHeaders(); for (int i = 0; i < headers.length; i++) { System.out.println(headers[i]); } System.out.println("----------------------------------------"); if (rsp.getEntity() != null) { System.out.println(EntityUtils.toString(rsp.getEntity())); } } finally { // If we could be sure that the stream of the entity has been // closed, we wouldn't need this code to release the connection. // However, EntityUtils.toString(...) can throw an exception. // if there is no entity, the connection is already released if (entity != null) entity.consumeContent(); // release connection gracefully } } // main private final static HttpClient createHttpClient() { ClientConnectionManager ccm = new ThreadSafeClientConnManager(getParams(), supportedSchemes); // new SingleClientConnManager(getParams(), supportedSchemes); DefaultHttpClient dhc = new DefaultHttpClient(ccm, getParams()); return dhc; } /** * Performs general setup. * This should be called only once. */ private final static void setup() { supportedSchemes = new SchemeRegistry(); // Register the "http" and "https" protocol schemes, they are // required by the default operator to look up socket factories. SocketFactory sf = PlainSocketFactory.getSocketFactory(); supportedSchemes.register(new Scheme("http", sf, 80)); sf = SSLSocketFactory.getSocketFactory(); supportedSchemes.register(new Scheme("https", sf, 80)); // prepare parameters HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, "UTF-8"); HttpProtocolParams.setUseExpectContinue(params, true); defaultParameters = params; } // setup private final static HttpParams getParams() { return defaultParameters; } /** * Creates a request to execute in this example. * * @return a request without an entity */ private final static HttpRequest createRequest() { HttpRequest req = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); //("OPTIONS", "*", HttpVersion.HTTP_1_1); return req; } }
翻譯不好,請見諒! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |