`

HttpClient的Demo

 
阅读更多

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);
			
		}

	 
 


}
 

 

 

 

 

参考文献

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    HttpClient Demo

    这个"HttpClient Demo"工程应该包含了示例代码,展示了如何使用HttpClient进行HTTP通信。你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地...

    httpclient Demo 案例 含jar

    在这个“httpclient Demo 案例 含jar”中,我们将深入探讨如何使用HttpClient来处理POST请求时传递参数的字符原样问题,即避免参数被自动处理或转换。 HttpClient 4.5版本是一个稳定且广泛使用的版本,它包含了各种...

    android httpclient demo

    在"android httpclient demo"项目中,我们可以看到以下关键文件: - `.classpath`:包含项目的类路径信息,用于构建和运行。 - `AndroidManifest.xml`:定义应用的基本信息,如权限、活动、服务等。在这个例子中,...

    Apache HttpClient Demo

    在阅读"Apache HttpClient Demo"这篇博客时,应重点关注示例代码,理解如何初始化HttpClient,构建请求,设置参数,发送请求,以及解析和处理响应。此外,还可以学习如何优化配置,如调整连接池大小,设置合适的超...

    C# httpclient demo

    标题"C# httpClient demo"指的是一个使用C#编程语言编写的示例代码,它演示了如何使用HttpClient类进行网络请求。HttpClient是.NET Framework 4.5及更高版本中的一个类,用于处理HTTP通信,是现代、异步且高效的HTTP...

    httpclient Demo

    HttpClient是Apache基金会开发的一个HTTP客户端库,用于在Java应用程序中执行HTTP请求。...通过学习这个Demo,你可以深入理解HttpClient的用法,以及它如何与其他库如DOM4J配合工作,增强你的网络编程能力。

    HttpClient_Demo

    HttpClient是Java中用于发送HTTP请求的一个重要库,它允许开发者...HttpClient_Demo项目应包含一个或多个Java源文件,演示了上述知识点的实际应用,通过阅读和运行这些代码,可以更深入地理解HttpClient的使用方法。

    jersery RestFul web service工程 应用了httpClient demo以及日志操作源码和java 动态反射机制

    jersery RestFull web service工程 应用了httpClient demo以及日志操作源码和java 动态反射机制 整个工程用来对外提供一个简化的ceph云存储服务器的restful api 同时工程作为 学习jersery 以及简单的统一日志管理 ...

    httpClient完整请求Demo

    HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。...本示例将深入讲解如何使用HttpClient进行完整的HTTP请求,同时结合JSON数据处理,因为"json...希望这个Demo能帮助你在实际项目中更好地运用HttpClient。

    HttpClient的简单demo

    这是一个android的HttpClient简单demo,实现了post与get两种方式,包括完整的客户端和服务器端程序,数据库采用的是MySql数据库,数据库部分请用户自己完成,都是最简单的,我已经测试通过,这是我一天的成果,参考...

    httpclient(springboot)demo

    本篇将详细介绍如何在Spring Boot项目中整合HttpClient,以及这个整合的示例(demo)所涉及的关键知识点。 首先,让我们理解Spring Boot与HttpClient的整合过程: 1. **添加依赖**:在`pom.xml`文件中,你需要引入...

    HttpClientDemo

    首先,我们需要引入HttpClient的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.httpcomponents &lt;artifactId&gt;httpclient &lt;version&gt;4.5.13 ``` 接下来,我们将逐步...

    httpclient调用接口demo

    本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    HttpClient抓取网页Demo

    在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    httpcore-httpclient-demo.zip

    HTTPCore和HttpClient是Apache软件基金会开发的两个重要组件,它们在Java编程中广泛用于构建网络应用,特别是处理HTTP协议的请求和响应。HTTPCore是低级别、轻量级的库,提供基础的HTTP连接管理,而HttpClient则是在...

    wechatpay-apache-httpclient:微信支付 APIv3 Apache HttpClient装饰器(decorator)

    wechatpay-apache-httpclient 概览 的扩展,实现了请求签名的生成和应答签名的验证。 如果你是使用Apache HttpClient的商户开发者,可以使用它构造HttpClient。得到的HttpClient在执行请求时将自动携带身份认证信息...

    HttpClient接口调用工具类(附带demo)

    最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,用于从服务器获取资源。HttpClient中的`HttpGet`类可以用来创建GET请求。只需提供URL作为构造函数的...

    httpclient发送get请求和post请求demo

    在Java编程中,Apache HttpClient库是一个非常常用的工具,它提供了对HTTP协议的强大支持,包括GET和POST...在提供的压缩包文件中,`test-demo`和`httpclient-demo`可能包含了这些示例的源码,供你进一步学习和参考。

    Java通过HttpClient调用百度地图Demo

    在这个特定的示例中,我们关注的是如何使用HttpClient来调用百度地图的API,创建一个简单的Demo。下面将详细介绍这个过程以及相关的技术知识点。 首先,你需要在项目中引入Apache HttpClient库。这可以通过Maven或...

Global site tag (gtag.js) - Google Analytics