`

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

	 
 


}
 

 

 

 

 

参考文献

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics