- 浏览: 379951 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (107)
- Linux (2)
- WebService (4)
- Java基础 (18)
- 优秀博客文章 (6)
- 面试 (2)
- 视频 (1)
- 开源软件 (7)
- DOS命令、批处理 (2)
- SSH Mybatis (11)
- MQ (3)
- 个人开发者 (1)
- 设计模式 (2)
- 博客 (1)
- 缓存 (1)
- 数据库 (10)
- 工具软件 (9)
- Tomcat (3)
- 网络 (2)
- XML 、JSON (1)
- OSGI (1)
- 算法 (1)
- 计算机基础、网络 (1)
- Web 开发 (3)
- 程序人生 (1)
- Servlet基础 (1)
- 英语 (1)
- 临时、未分类 (4)
- 网路、word使用技巧 (2)
- Java性能优化 (0)
最新评论
-
360pluse:
使用apache ActiveMQ深入企业级程序设计网盘地址: ...
Active MQ技术文章(JMS) -
星辰海:
问下,像TimerTask一旦抛异常,就永远不执行了,这种情况 ...
spring学习系列 -- 定时器三 两种定时器的比较 -
360pluse:
使用apache ActiveMQ深入企业级程序设计百度网盘: ...
Active MQ技术文章(JMS) -
xj56ai:
能不能 提供一下 包
Spring 学习系列 -- Spring + Mybatis 从零开始配置多数据源访问 -
wejack639:
写的很好,很有用,谢谢
spring学习系列 -- 定时器三 两种定时器的比较
HttpClientDemo
模拟凤凰的将军的登录、领取功勋(未实现)
存储返回的结果类
package com.hry.httpclient; import java.io.IOException; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.ParseException; import org.apache.http.StatusLine; import org.apache.http.client.CookieStore; import org.apache.http.cookie.Cookie; import org.apache.http.util.EntityUtils; public class Result { private StatusLine statusLine; private CookieStore cookieStore; // private HttpEntity entity; private String sContent; private Header[] headers; public String toString(){ StringBuilder sb = new StringBuilder(); // StatusLine sb.append(statusLine).append("\r\n"); // header for(Header o : headers){ sb.append(o.getName()).append("=").append(o.getValue()).append("\r\n"); } // entity sb.append(sContent).append("\r\n"); // Cookies for(Cookie o : cookieStore.getCookies()){ sb.append(o.getName()).append("=").append(o.getValue()).append("\r\n"); } return sb.toString(); } public String getHeader(String name){ // Cookies for(Cookie o : cookieStore.getCookies()){ if(o.getName().equalsIgnoreCase(name)){ return o.getValue(); } } return ""; } public StatusLine getStatusLine() { return statusLine; } public void setStatusLine(StatusLine statusLine) { this.statusLine = statusLine; } public CookieStore getCookieStore() { return cookieStore; } public void setCookieStore(CookieStore cookieStore) { this.cookieStore = cookieStore; } public String getsContent() { return sContent; } public void setsContent(String sContent) { this.sContent = sContent; } public Header[] getHeaders() { return headers; } public void setHeaders(Header[] headers) { this.headers = headers; } }
模拟http的Post、Get类
package com.hry.httpclient; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.CookieStore; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; public class JiangJun { public Result post(String sUrl,CookieStore cookieStore, List<NameValuePair> list, boolean isPropxy ) throws ClientProtocolException, IOException{ DefaultHttpClient client = new DefaultHttpClient(); if(cookieStore != null){ client.setCookieStore(cookieStore); } // 代理 if(isPropxy){ HttpHost proxy = new HttpHost("10.36.24.20", 60001); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); } //实例化一个post请求 // String sUrl = "http://play.ifeng.com/?_c=jj&_a=Dologin"; // String sUrl = "http://s2.jj.ifeng.com/ifeng_s2/need.py"; HttpPost post = new HttpPost(sUrl); //设置需要提交的参数 // List<NameValuePair> list = new ArrayList<NameValuePair>(); // list.add(new BasicNameValuePair("username","huangrongyou1")); // list.add(new BasicNameValuePair("password","111111")); // list.add(new BasicNameValuePair("inpass","on")); post.setEntity(new UrlEncodedFormEntity(list,"UTF-8")); //实行请求并返回 HttpResponse response = client.execute(post); // 设置返回数据 Result result = new Result(); result.setCookieStore(client.getCookieStore()); result.setsContent(EntityUtils.toString(response.getEntity())); result.setHeaders(response.getAllHeaders()); result.setStatusLine(response.getStatusLine()); // 释放 post.releaseConnection(); return result; } public Result get(String sUrl,CookieStore cookieStore, List<NameValuePair> list, boolean isPropxy ) throws ClientProtocolException, IOException{ DefaultHttpClient client = new DefaultHttpClient(); if(cookieStore != null){ client.setCookieStore(cookieStore); } // 代理 if(isPropxy){ HttpHost proxy = new HttpHost("10.36.24.20", 60001); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); } // List<NameValuePair> qparams = new ArrayList<NameValuePair>(); // qparams.add(new BasicNameValuePair("q", "httpclient")); // qparams.add(new BasicNameValuePair("btnG", "Google Search")); // qparams.add(new BasicNameValuePair("aq", "f")); // qparams.add(new BasicNameValuePair("oq", null)); // URI uri = URIUtils.createURI("http", "www.google.com", -1, // "/search", // URLEncodedUtils.format(qparams, "UTF-8"), null); // HttpGet httpget = new HttpGet(uri); // System.out.println(httpget.getURI()); //实例化一个post请求 // String sUrl = "http://play.ifeng.com/?_c=jj&_a=Dologin"; // String sUrl = "http://s2.jj.ifeng.com/ifeng_s2/need.py"; HttpPost post = new HttpPost(sUrl); //设置需要提交的参数 // List<NameValuePair> list = new ArrayList<NameValuePair>(); // list.add(new BasicNameValuePair("username","huangrongyou1")); // list.add(new BasicNameValuePair("password","111111")); // list.add(new BasicNameValuePair("inpass","on")); post.setEntity(new UrlEncodedFormEntity(list,"UTF-8")); //实行请求并返回 HttpResponse response = client.execute(post); // 设置返回数据 Result result = new Result(); result.setCookieStore(client.getCookieStore()); result.setsContent(EntityUtils.toString(response.getEntity())); result.setHeaders(response.getAllHeaders()); result.setStatusLine(response.getStatusLine()); // 释放 post.releaseConnection(); return result; } }
模拟登录凤凰的将军、领取功勋(未实现);并打印返回的值
package com.hry.httpclient; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; 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.conn.params.ConnRoutePNames; import org.apache.http.cookie.Cookie; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.apache.http.client.CookieStore; public class HttpClienTest { //实例化一个Httpclient的 JiangJun jj = new JiangJun(); public Result regedit(boolean isPropxy) throws ClientProtocolException, IOException{ //设置需要提交的参数 List<NameValuePair> list = new ArrayList<NameValuePair>(); list.add(new BasicNameValuePair("username","huangrongyou1")); list.add(new BasicNameValuePair("password","111111")); list.add(new BasicNameValuePair("inpass","on")); String sUrl = "http://play.ifeng.com/?_c=jj&_a=Dologin"; return jj.post(sUrl, null, list, isPropxy); } public Result regeditService(Result rs ,boolean isPropxy) throws ClientProtocolException, IOException{ List<NameValuePair> list = new ArrayList<NameValuePair>(); String sUrl = "http://play.ifeng.com/?_c=jj&_a=enterGame&area=2"; return jj.get(sUrl, rs.getCookieStore(),list , isPropxy); } public Result regeditService2(Result rs ,boolean isPropxy) throws ClientProtocolException, IOException{ List<NameValuePair> list = this.setNameValuePair(rs); String sUrl = "http://s2.jj.ifeng.com/accept.py?uid=22859&uname=ifeng222859&lgtime=1338653001&indulge=1&sign=f9975b5dd1b356787e6857cca644f092&1338653001"; return jj.get(sUrl, rs.getCookieStore(),list , isPropxy); } public Result regeditTicket(Result rs ,boolean isPropxy) throws ClientProtocolException, IOException{ List<NameValuePair> list = new ArrayList<NameValuePair>(); String sUrl = "http://s2.jj.ifeng.com/index.py"; return jj.get(sUrl, rs.getCookieStore(),list , isPropxy); } public Result regeditAccept(Result rs ,boolean isPropxy) throws ClientProtocolException, IOException{ List<NameValuePair> list = this.setNameValuePair(rs); String sUrl = "http://s2.jj.ifeng.com/accept.py?uid=22859&uname=ifeng222859&lgtime=1338651039&indulge=1&sign=3885d91acbd4247ec8d45d7fc25657b8&1338651039"; return jj.get(sUrl, rs.getCookieStore(),list , isPropxy); } public Result getGongxun(Result rs ,boolean isPropxy) throws ClientProtocolException, IOException{ String sUrl = "http://s2.jj.ifeng.com/ifeng_s2/need.py"; //设置需要提交的参数 List<NameValuePair> list = new ArrayList<NameValuePair>(); return jj.post(sUrl, rs.getCookieStore(), list, isPropxy); } public Result getTask(Result rs ,String p,String t, boolean isPropxy) throws ClientProtocolException, IOException{ String sUrl = "http://s2.jj.ifeng.com/ifeng_s2/need.py?p="+p+"&t="+t+"&e=1"; //设置需要提交的参数 List<NameValuePair> list = new ArrayList<NameValuePair>(); return jj.post(sUrl, rs.getCookieStore(), list, isPropxy); } private List<NameValuePair> setNameValuePair (Result rs){ List<NameValuePair> list = new ArrayList<NameValuePair>(); for(Cookie o : rs.getCookieStore().getCookies()){ list.add(new BasicNameValuePair(o.getName(),o.getValue())); } return list; } /** * @param args * @throws IOException * @throws ClientProtocolException */ public static void main(String[] args) throws ClientProtocolException, IOException { HttpClienTest t = new HttpClienTest(); boolean isPropxy = false; Result rs = t.regedit(isPropxy); System.out.println("regedit"); System.out.println(rs); rs = t.regeditService(rs, isPropxy); System.out.println("regeditService"); System.out.println(rs); rs = t.regeditService2(rs, isPropxy); System.out.println("regeditService2"); System.out.println(rs); rs = t.regeditTicket(rs, isPropxy); System.out.println("regeditTicket"); System.out.println(rs); rs = t.regeditAccept(rs, isPropxy); System.out.println("regeditAccept"); System.out.println(rs); rs = t.getGongxun(rs, isPropxy); System.out.println("getGongxun"); System.out.println(rs); rs = t.getTask(rs, "nJ+OypWPqe7EDmXjoBHx15K0T7Vo4p262Pw=", rs.getHeader("ticket"), isPropxy); System.out.println("getTask"); System.out.println(rs); } }
参考文献
- HttpClent教程 官方中文pdf
- Apache HttpClient官网
- httpclient4的封装
- 我们爱分享---HttpClient4之模拟http请求 模拟论坛自动回帖的功能
发表评论
-
HttpClient学习系列 -- 学习总结
2012-12-17 22:43 28320jar包: HttpClient 4.x版本 简要 ... -
HtmlParser学习系列 -- 学习总结
2012-12-16 20:53 11828引入主要包: htmlparser.jar ... -
Apache 开源软件学习
2012-10-31 21:38 968重要摘要 对象池化技术 对象池化的基本思路是: ... -
开源Java库
2012-10-18 13:06 871javassist API 第一个ja ... -
HttpClient的Demo(二)
2012-06-08 13:32 6406代码备用: 由chrome浏览器的开发人员工具获取请求 ... -
开源软件
2012-05-15 13:06 1262文章 J2EE学习中一些值得研究的开源项 ...
相关推荐
这个"HttpClient Demo"工程应该包含了示例代码,展示了如何使用HttpClient进行HTTP通信。你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地...
在这个“httpclient Demo 案例 含jar”中,我们将深入探讨如何使用HttpClient来处理POST请求时传递参数的字符原样问题,即避免参数被自动处理或转换。 HttpClient 4.5版本是一个稳定且广泛使用的版本,它包含了各种...
在"android httpclient demo"项目中,我们可以看到以下关键文件: - `.classpath`:包含项目的类路径信息,用于构建和运行。 - `AndroidManifest.xml`:定义应用的基本信息,如权限、活动、服务等。在这个例子中,...
在阅读"Apache HttpClient Demo"这篇博客时,应重点关注示例代码,理解如何初始化HttpClient,构建请求,设置参数,发送请求,以及解析和处理响应。此外,还可以学习如何优化配置,如调整连接池大小,设置合适的超...
标题"C# httpClient demo"指的是一个使用C#编程语言编写的示例代码,它演示了如何使用HttpClient类进行网络请求。HttpClient是.NET Framework 4.5及更高版本中的一个类,用于处理HTTP通信,是现代、异步且高效的HTTP...
HttpClient是Apache基金会开发的一个HTTP客户端库,用于在Java应用程序中执行HTTP请求。...通过学习这个Demo,你可以深入理解HttpClient的用法,以及它如何与其他库如DOM4J配合工作,增强你的网络编程能力。
HttpClient是Java中用于发送HTTP请求的一个重要库,它允许开发者...HttpClient_Demo项目应包含一个或多个Java源文件,演示了上述知识点的实际应用,通过阅读和运行这些代码,可以更深入地理解HttpClient的使用方法。
jersery RestFull web service工程 应用了httpClient demo以及日志操作源码和java 动态反射机制 整个工程用来对外提供一个简化的ceph云存储服务器的restful api 同时工程作为 学习jersery 以及简单的统一日志管理 ...
HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。...本示例将深入讲解如何使用HttpClient进行完整的HTTP请求,同时结合JSON数据处理,因为"json...希望这个Demo能帮助你在实际项目中更好地运用HttpClient。
这是一个android的HttpClient简单demo,实现了post与get两种方式,包括完整的客户端和服务器端程序,数据库采用的是MySql数据库,数据库部分请用户自己完成,都是最简单的,我已经测试通过,这是我一天的成果,参考...
本篇将详细介绍如何在Spring Boot项目中整合HttpClient,以及这个整合的示例(demo)所涉及的关键知识点。 首先,让我们理解Spring Boot与HttpClient的整合过程: 1. **添加依赖**:在`pom.xml`文件中,你需要引入...
首先,我们需要引入HttpClient的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.httpcomponents <artifactId>httpclient <version>4.5.13 ``` 接下来,我们将逐步...
本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
HTTPCore和HttpClient是Apache软件基金会开发的两个重要组件,它们在Java编程中广泛用于构建网络应用,特别是处理HTTP协议的请求和响应。HTTPCore是低级别、轻量级的库,提供基础的HTTP连接管理,而HttpClient则是在...
wechatpay-apache-httpclient 概览 的扩展,实现了请求签名的生成和应答签名的验证。 如果你是使用Apache HttpClient的商户开发者,可以使用它构造HttpClient。得到的HttpClient在执行请求时将自动携带身份认证信息...
最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,用于从服务器获取资源。HttpClient中的`HttpGet`类可以用来创建GET请求。只需提供URL作为构造函数的...
在Java编程中,Apache HttpClient库是一个非常常用的工具,它提供了对HTTP协议的强大支持,包括GET和POST...在提供的压缩包文件中,`test-demo`和`httpclient-demo`可能包含了这些示例的源码,供你进一步学习和参考。
在这个特定的示例中,我们关注的是如何使用HttpClient来调用百度地图的API,创建一个简单的Demo。下面将详细介绍这个过程以及相关的技术知识点。 首先,你需要在项目中引入Apache HttpClient库。这可以通过Maven或...