- 浏览: 930772 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
摘自 :http://hi.baidu.com/kinsonhe/blog/item/4a77d411ff00288a6538db96.html
1、HttpClient使用GET方式通过代理服务器读取页面的例子
import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; /** * HttpClient使用GET方式通过代理服务器读取页面的例子。 * * @author JAVA世纪网(java2000.net, laozizhu.com) */ public class HttpClientGet { public static void main(String[] args) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // 访问的目标站点,端口和协议 HttpHost targetHost = new HttpHost("www.java2000.net"); // 代理的设置 HttpHost proxy = new HttpHost("10.60.8.20", 8080); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); // 目标地址 HttpGet httpget = new HttpGet("/"); System.out.println("目标: " + targetHost); System.out.println("请求: " + httpget.getRequestLine()); // 执行 HttpResponse response = httpclient.execute(targetHost, httpget); HttpEntity entity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } if (entity != null) { entity.consumeContent(); } } }
2、HttpClient 4 使用POST方式提交普通表单数据的例子
import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; /** * HttpClient 4 使用POST方式提交普通表单数据的例子. * * @author JAVA世纪网(java2000.net, laozizhu.com) */ public class HttpClientPost { public static void main(String[] args) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // 代理的设置 HttpHost proxy = new HttpHost("10.60.8.20", 8080); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); // 目标地址 HttpPost httppost = new HttpPost("http://www.java2000.net/login.jsp"); System.out.println("请求: " + httppost.getRequestLine()); // 构造最简单的字符串数据 StringEntity reqEntity = new StringEntity("username=test&password=test"); // 设置类型 reqEntity.setContentType("application/x-www-form-urlencoded"); // 设置请求的数据 httppost.setEntity(reqEntity); // 执行 HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } if (entity != null) { entity.consumeContent(); } } }
3、HttpClient 4.0通过代理访问Https的代码例子
import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; /** * HttpClient 4.0通过代理访问Https的代码例子。 * * @author JAVA世纪网(java2000.net, laozizhu.com) */ public class HttpsProxyGet { public static void main(String[] args) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // 认证的数据 // 我这里是瞎写的,请根据实际情况填写 httpclient.getCredentialsProvider().setCredentials(new AuthScope("10.60.8.20", 8080), new UsernamePasswordCredentials("username", "password")); // 访问的目标站点,端口和协议 HttpHost targetHost = new HttpHost("www.google.com", 443, "https"); // 代理的设置 HttpHost proxy = new HttpHost("10.60.8.20", 8080); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); // 目标地址 HttpGet httpget = new HttpGet("/adsense/login/zh_CN/?"); System.out.println("目标: " + targetHost); System.out.println("请求: " + httpget.getRequestLine()); System.out.println("代理: " + proxy); // 执行 HttpResponse response = httpclient.execute(targetHost, httpget); HttpEntity entity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } if (entity != null) { entity.consumeContent(); } } }
4、HttpClient读取页面的使用例子
package com.laozizhu.apache.httpclient; import java.net.Socket; import org.apache.http.ConnectionReuseStrategy; import org.apache.http.Header; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; import org.apache.http.impl.DefaultConnectionReuseStrategy; import org.apache.http.impl.DefaultHttpClientConnection; 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.protocol.BasicHttpContext; import org.apache.http.protocol.BasicHttpProcessor; import org.apache.http.protocol.ExecutionContext; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpRequestExecutor; import org.apache.http.protocol.RequestConnControl; import org.apache.http.protocol.RequestContent; import org.apache.http.protocol.RequestExpectContinue; import org.apache.http.protocol.RequestTargetHost; import org.apache.http.protocol.RequestUserAgent; import org.apache.http.util.EntityUtils; /** * HttpClient读取页面的使用例子 * @author 老紫竹(java2000.net) * */ public class HttpGet { public static void main(String[] args) throws Exception { HttpParams params = new BasicHttpParams(); // HTTP 协议的版本,1.1/1.0/0.9 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); // 字符集 HttpProtocolParams.setContentCharset(params, "UTF-8"); // 伪装的浏览器类型 // IE7 是 // Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0) // // Firefox3.03 // Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 // HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1"); HttpProtocolParams.setUseExpectContinue(params, true); BasicHttpProcessor httpproc = new BasicHttpProcessor(); httpproc.addInterceptor(new RequestContent()); httpproc.addInterceptor(new RequestTargetHost()); httpproc.addInterceptor(new RequestConnControl()); httpproc.addInterceptor(new RequestUserAgent()); httpproc.addInterceptor(new RequestExpectContinue()); HttpRequestExecutor httpexecutor = new HttpRequestExecutor(); HttpContext context = new BasicHttpContext(null); HttpHost host = new HttpHost("www.java2000.net", 80); DefaultHttpClientConnection conn = new DefaultHttpClientConnection(); ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy(); context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host); try { String[] targets = { "/", "/help.jsp" }; for (int i = 0; i < targets.length; i++) { if (!conn.isOpen()) { Socket socket = new Socket(host.getHostName(), host.getPort()); conn.bind(socket, params); } BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]); System.out.println(">> Request URI: " + request.getRequestLine().getUri()); context.setAttribute(ExecutionContext.HTTP_REQUEST, request); request.setParams(params); httpexecutor.preProcess(request, httpproc, context); HttpResponse response = httpexecutor.execute(request, conn, context); response.setParams(params); httpexecutor.postProcess(response, httpproc, context); // 返回码 System.out.println("<< Response: " + response.getStatusLine()); // 返回的文件头信息 Header[] hs = response.getAllHeaders(); for (Header h : hs) { System.out.println(h.getName() + ":" + h.getValue()); } // 输出主体信息 System.out.println(EntityUtils.toString(response.getEntity())); System.out.println("=============="); if (!connStrategy.keepAlive(response, context)) { conn.close(); } else { System.out.println("Connection kept alive..."); } } } finally { conn.close(); } } }
5、httpclient中文乱码解决
httpclient默认使用ISO-8859-1读取http响应的内容,如果内容中包含汉字的话就得动用丑陋的new String(str.getBytes("ISO-8859-1"),"GBK");语句了。 解决办法就是使用以下配置。 private static final String CONTENT_CHARSET = "GBK";// httpclient读取内容时使用的字符集 HttpClient client = new HttpClient(); client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);
6、HttpClient 4处理文件上传的例子(MultipartEntity)
import java.io.File; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; /** * HttpClient 4处理文件上传的例子(MultipartEntity).<br> * 需要 James Mime4j 0.5的版本,0.6的不行。 * * @author JAVA世纪网(java2000.net, laozizhu.com) */ public class HttpClientMultipartFormPost { public static void main(String[] args) throws Exception { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://localhost"); // 一个本地的文件 FileBody bin = new FileBody(new File("d:/BIMG1181.JPG")); // 一个字符串 StringBody comment = new StringBody("A binary file of some kind"); // 多部分的实体 MultipartEntity reqEntity = new MultipartEntity(); // 增加 reqEntity.addPart("bin", bin); reqEntity.addPart("comment", comment); // 设置 httppost.setEntity(reqEntity); System.out.println("执行: " + httppost.getRequestLine()); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (resEntity != null) { System.out.println("返回长度: " + resEntity.getContentLength()); } if (resEntity != null) { resEntity.consumeContent(); } } }
发表评论
-
使用httpclient必须知道的参数设置及代码写法、存在的风险
2015-07-15 17:15 799http://jinnianshilongnian.itey ... -
HttpClient4.x应用指南
2010-07-26 15:18 3197HttpClient程序包是一个实现了 HTTP 协议的客户端 ... -
HttpClient4.0手动处理redirect
2010-07-26 15:04 3577需要手动处理redirect。 (以获得中间过程的 Locat ... -
HttpClient的例子链接
2010-07-13 17:49 1229http://itbiji.net/2010/05/httpc ...
相关推荐
httpclient.jar包及其POST方法使用例子
httpClient例子,支持代理(去掉注释即可用代理),已封装好util(post,get),JAR也有,打开导入工程就可以用。
基于Android1.0_r1的HttpClient的例子
关于HttpClient的小例子,很简单,附件为项目源码,直接导入执行。注意包含了配置信息。
可以用作测试例子 测试流传输的接口需要用到,HTTPClient,jar包
简单来说HttpClient就是模拟post或get的. 简化HTTP客户端与服务器进行各种通讯的开源东东 最新是4.0-alpha2,内含jar包及例子.
httpclient小例子,适合新手入门,就是这么简单粗暴
Java Httpclient的一个小例子,只有客户端的代码,服务器端随便写一个servlet都行,我也是新学的,主要是自己下载的jar包然后自己整合的
其中有4.1.1jar包、httpclient说明文档doc格式、简单使用例子post\get方式都有,导入类可用。项目中使用很方便!
解压后有httpclient使用例子,架包,有英语教程
比较全的httpclient入门介绍和例子代码
httpclient 编写java代码 系统自动登入别人的系统进行操作。
httpclient-4.0-alpha2.jar commons-codec-1.3.jar commons-httpclient-3.1.jar httpclient开发所有的包以及实例
httpclient,jar,实例,例子,post,get
httpclient post例子,多线程
一个使用HttpClient访问WS 的例子,包含相关jar包
httpclient的Android应用,包括基本的所有jar包httpclient-4.0.1.jar;httpcore-nio-4.0.1.jar;httpmime-4.0.1.jar;
httpclient带附件和不带件的例子以及SOAP请求的例子,该压缩包解压后是一个java web工程,直接引入到eclipst下就可以。要在Build Path——Configure Build Path中添加tomcat的lib包。
java实现http接口服务端、客户端代码例子。使用jar(commons-codec-1.3.jar、commons-httpclient-3.0.1.jar、commons-logging-1.1.1.jar)
httpclient testgn 接口测试