`

HttpClient使用二

    博客分类:
  • java
 
阅读更多

 

   封装后返回Map、实体、List中含有实体, 等。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

/**
* @ClassName: HttpClientUtil 
* @date 2015年10月14日 下午4:32:36 
* @Description:
 */
public class HttpClientUtil {
	
	
	public static JSONArray getJsonArrayFromUrl(String urlStr,  
            Map<String, String> params){
		String result = getStrFromUrl(urlStr,params);
		return  JSONArray.fromObject(result ) ; 
	}
	
	public static Map<String,Object> getMapFromUrl(String urlStr,  
            Map<String, String> params){
		String result = getStrFromUrl(urlStr,params);
		return JSONObject.fromObject( result); 
	}
 
	
    /** 
     * 模拟url访问 从特定的url中获取json 
     * @param urlStr 
     * @param params 
     * @return json object ,or null if failed 
     * 参数经过封装后传过来 ,提交为 post请求 
     */  
    public static String getStrFromUrl(String urlStr,  
            Map<String, String> params) {  
        HttpClient httpClient = new DefaultHttpClient();  
        httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "GBK");
        
        HttpPost httpPost = new HttpPost(urlStr);  
        
        String content="" ; 
        try {  
            if (params != null) {  
                Iterator<String> keys = params.keySet().iterator();  
                List<NameValuePair> nvps = new ArrayList<NameValuePair>();  
                while (keys.hasNext()) {  
                    String key = keys.next();  
                    nvps.add(new BasicNameValuePair(key, params.get(key)));  
                }  
                httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
            }  
            HttpResponse response = httpClient.execute(httpPost);  
            HttpEntity entity = response.getEntity();
            content = EntityUtils.toString(entity , "utf-8"); 
            
        } catch (Exception e) {  
             e.printStackTrace();  
        }  
  
        return content;  
    }
    /**
     *  查询list<实体> 数据 
    *   @Title getListFromUrl 
    *   @param url
    *   @param params
    *   @param clazz
    *   @return
    *   @return List<T>    
    *   @throws 
    *
     */
	public static <T extends Object> List<T> getListFromUrl(
			String url, Map<String, String> params , Class<T> clazz ) {
		String result = getStrFromUrl(url,params);
		if(result==null || "".equals( result)){
			return null ;
		}
		JSONArray jsonarray = JSONArray.fromObject(result );  
		List<T> list = (List<T>)JSONArray.toList(jsonarray, clazz); 
		return list;
	}  
	
	/**
	 * 得到对象从实体里面
	*   @Title getEntityFromUrl 
	*   @param url
	*   @param params
	*   @param clazz
	*   @return
	*   @return T    
	*   @Description  
	*   @throws 
	*
	 */
	public static <T extends Object> T getEntityFromUrl(
			String url, Map<String, String> params , Class<T> clazz ) {
		String result = getStrFromUrl(url,params);
		if(result==null || "".equals( result)){
			return null ;
		}
		JSONObject jb = JSONObject.fromObject(result);
		T t = (T) JSONObject.toBean( jb,  clazz ) ;
		return  t ; 
	}  

 


	public static void main(String[] args) {
//		Map map = new HashMap();
//		map.put("result", "1");
//		map.put("status", "2");
//		NetworkdriveFile net = new NetworkdriveFile();
//		net.setChapter_id("1");
//		net.setChapter_name("name");;
//		net.setCom_name("com Name");
//		
//		NetworkdriveFile net2 = new NetworkdriveFile();
//		net2.setChapter_id("1");
//		net2.setChapter_name("name");;
//		net2.setCom_name("com Name");
//		List list = new ArrayList();
//		list.add( net);
//		list.add(net2); 
//		map.put("list", list);
//		
//		
//		String str = JSONObject.fromObject(map ).toString();
//		System.out.println( map );
//		HashMap map3 = reflect(JSONObject.fromObject(str) ) ; 
//		System.out.println( map3.get("result" ));
//		List list3 = reflect(JSONArray.fromObject( map3.get("list")));
//		NetworkdriveFile ndf =  (NetworkdriveFile) JSONObject.toBean( JSONObject.fromObject(list3.get(0) )  ,   NetworkdriveFile.class ); 
//		System.out.println( list3.get(0) );
		 
//		JSONObject map5 = JSONObject.fromObject(str  ) ; 
//		List<NetworkdriveFile> list5  = JSONArray.toList(JSONArray.fromObject(map5.get("list") ), NetworkdriveFile.class); 
//		System.out.println( list5 );
//		System.out.println( map5.get("result"));
//		
//		List list2 = (List) map1.get("list"); 
//		JSONArray.toList(list2, NetworkdriveFile.class) ; 
//		
//		NetworkdriveFile net3 = (NetworkdriveFile)JSONObject.toBean((JSONObject)list2.get(0) ) ; 
		
		 System.out.println( "22222222222");
//		List<NetworkdriveFile> list2 = HttpClientUtil.getListFromUrl2( NetworkdriveFile.class );
//		System.out.println( list2 );
		 
	}
}

 

分享到:
评论

相关推荐

    使用HttpClient下载图片

    HttpClient是个很不错的开源框架(org.appache.http),封装了访问http的请求头,参数,内容体,响应等等,使用起来更方面更强大。 HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都...

    HttpClientUtil2.java

    HttpClient汇总工具类 HttpClient汇总工具类HttpClient汇总工具类HttpClient汇总工具类

    httpclient

    使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1. 创建HttpClient对象。 2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建...

    httpClient

    httpClient的get请求方式2 * @return * @throws Exception */ public static String doGet(String url, String charset) throws Exception { /* * 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:...

    httpclient-4.5jar

    2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6.httpclient-win-4.5.jar 7.httpcore-4.4.1.jar 8.httpmime-4.5.jar 9.jna-4.1.0.jar 10.jna-platform-4.1.0.jar

    httpclientUtil

    2.基于HttpAsycClient-4.1封装的异步HttpClient工具类; 3.javanet包下面是基于jdk自带的UrlConnection进行封装的。 前2个工具类支持插件式配置Header、插件式配置httpclient对象,这样就可以方便地自定义header信息...

    httpclient4_中文版帮助文档.

    2. 什么是HttpClient不能做的 HttpClient 不是一个浏览器。它是一个客户端的HTTP通信实现库。HttpClient的目标是发送和接收HTTP报文。HttpClient不会去缓存内容,执行 嵌入在HTML页面中的javascript代码,猜测内容...

    httpclient4.4.1 and httpclient4.5.3.rar

    httpclient-4.5.jar

    httpclient4.3 封装工具类

    httpclient4.3的二次封装,解决了代理问题、多线程问题、SSL问题、通用的get、post请求

    httpclientutil

    HttpClientUtil2-发送json返回json测试通过.java

    爬虫:httpclient+jsoup

    使用三种方案实现网页爬虫: 1、httpclient 2、jsoup 3、httpclient+jsoup

    HttpClient获取OAuth2.0中的code

    通过httpclient post去获取,response返回码是302,返回的code放在header的Location中。 请求的时候client_id,response_type,redirect_uri,state拼接在url后面,account和password放在body表单(x-...

    android 学习笔记6-HttpClient 多线程下载 断点续传 进度条 源码关联

    2、使用HttpClient发送POST请求:和之前的GET类似 3、使用异步HttpClient发送请求,可以在github上找一些别人已经写好的代码,封装度比较高,直接拿来用。 4、多线程下载:使用RandomAccessFile输出流写 5、多线程...

    httpclient-4.3.1.wso2v1.jar

    httpclient的jar包,下载后,放到WEB-INF目录lib里面就行了

    高效池化-JAVA-HttpClient工具类

    1.高效简单池化的...2.支持基于SpringBoot 2.1.x的自动装载模块,引用依赖即可使用。 3.公司几十个项目都使用该工具类访问第三方的Http/Https+json协议接口。 4.经过上市公司多个项目的考验、简单实用、可靠。

    httpclient 4.X版本下载有的带源码包

    2017-12-20 09:28 2,348,172 httpclient-4.5.2-javadoc.jar 2017-01-08 11:15 707,899 httpclient-4.5.2-sources.jar 2016-12-12 14:46 736,658 httpclient-4.5.2.jar 2018-03-28 17:13 747,794 httpclient-4.5.3....

    HttpClient包及例子

    简单来说HttpClient就是模拟post或get的. 简化HTTP客户端与服务器进行各种通讯的开源东东 最新是4.0-alpha2,内含jar包及例子.

    异步HttpClient

    实现了Java版的Promise 和 HttpClient。HttpClient 支持同步和异步两种方式,也支持多种不同实现。目前有Netty 和 Apache Compoenet两种实现。本次上传移除了Netty实现。主要解决生产环境中同步httpclient造成的IO...

    HttpClient以及获取页面内容应用

    一般而言,使用HttpClient均需导入httpclient.jar与httpclient-core.jar2个包。 1.4使用方法与步骤 开发环境:需要 使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1.创建HttpClient对象。 ...

Global site tag (gtag.js) - Google Analytics