`

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使用教程 #### HttpClient概述与重要性 在当今互联网时代,HTTP协议无疑是网络通信中最常用且至关重要的协议之一。随着技术的发展,越来越多的Java应用程序需要直接通过HTTP协议访问网络资源。尽管...

    HttpClient使用教程 事例

    在提供的压缩包文件中,"第一个版本.rar"和"第二个版本.rar"可能包含了不同的HttpClient使用示例或者不同版本的代码。你可以解压并查看这些文件,以便更深入地理解和学习HttpClient的具体用法。每个版本可能包含不同...

    使用HttpClient必须的jar包

    在Java项目中使用HttpClient时,为了确保功能的完整性和正确性,通常需要引入一系列的jar包。这些jar包包含了HttpClient的核心组件、依赖库和其他必要的工具,它们共同构成了HttpClient的运行环境。 以下是一些关键...

    httpClient组件使用说明

    本篇文章将详细讲解HttpClient的使用方法,包括如何搭建环境、所需的jar包、基本应用以及实例演示,旨在帮助初级学员快速掌握HttpClient的基础操作。 一、环境搭建 在使用HttpClient之前,首先需要在项目中引入...

    httpClient使用指南最新版

    ### HttpClient 使用指南知识点详解 #### 一、概述与基本概念 **1.1 请求执行** - **1.1.1 HTTP请求**: 在客户端发起HTTP请求时,需要构造一个`HttpRequest`对象,它包含了请求方法(如GET、POST)、请求URL等...

    使用HttpClient下载图片

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

    httpclient简单使用

    本教程将基于标题"HTTPClient简单使用"和提供的文件`HttpService`、`HttpClient`来阐述HTTPClient的基本使用方法。 1. **HTTPClient简介** HTTPClient是Apache的 HttpClient库,它为Java开发者提供了全面的HTTP...

    httpclient.jar包下载

    2. **请求和响应模型**:HttpClient使用HttpRequest和HttpResponse对象封装HTTP请求和响应,便于处理请求头、请求体和响应头、响应体。 3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、...

    commons-httpclient,java中使用httpclient中使用的扩展工具

    2. **请求构造**:你可以使用`GetMethod`、`PostMethod`等类来创建HTTP请求。例如,`GetMethod`用于GET请求,而`PostMethod`用于POST请求。这些类允许设置请求头、URL、POST数据等。 3. **参数处理**:`...

    使用httpclient访问servlet

    2. **HttpClient的基本使用**: 使用HttpClient首先需要导入相关的依赖库,如Apache HttpClient的`httpclient`和`httpcore`模块。然后,创建一个HttpClient实例,比如使用`HttpClients.createDefault()`,这将提供...

    httpclient4.0 使用帮助、例子

    本篇文章将详细介绍HTTPClient 4.0的使用方法,包括其核心概念、基本操作和示例代码。 一、核心概念 1. HttpClient实例:HttpClient对象是执行HTTP请求的核心,负责建立连接、发送请求和接收响应。通过`...

    HttpClientHelper 工具类

    2. **异步请求**:使用异步方法发送HTTP请求,允许其他任务在等待响应时继续执行。异步请求提高了程序的响应性和效率,尤其在UI线程中,可以避免阻塞用户界面。 3. **返回数据格式多样**: - **字符串**:通常用于...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    二、HttpClient的使用步骤 1. **创建HttpClient实例**:首先,需要创建一个HttpClient实例,可以设置连接超时、重试策略等参数。 2. **选择HttpMethod**:根据实际需求选择合适的HttpMethod,比如使用GetMethod或...

    HttpClient 调用WebService示例

    2. **创建HttpClient实例**: 要开始使用HttpClient,你需要创建一个`CloseableHttpClient`对象。例如: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ``` 3. **构建HttpPost请求**: ...

    一个使用HttpClient调用天气预报接口的例程

    然而,由于这个例程使用了HttpClient,我们需要了解其工作原理和如何在Android环境中正确使用。 7. **注意事项**: - 异步处理:网络请求不应在主线程中进行,以免阻塞用户界面,应使用异步任务或Android的...

    HttpClient使用HttpGet进行json数据传输(所使用的jar.zip)

    2. **创建HttpClient对象**:HttpClient是所有HTTP操作的基础。你可以使用`HttpClientBuilder`或`HttpClients`类来创建一个HttpClient实例。例如: ```java CloseableHttpClient httpClient = HttpClients.create...

    Java 使用HttpClient保持SESSION状态

    下面我们将详细探讨如何在Java中使用HttpClient来实现这一目标。 首先,我们需要导入必要的Apache HttpClient库,通常包含以下依赖: ```xml &lt;groupId&gt;org.apache.httpcomponents &lt;artifactId&gt;httpclient ...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    httpClient需要的jar包

    2. **连接管理**:HttpClient提供了一种机制来管理HTTP连接,包括连接池(PoolingHttpClientConnectionManager),它可以重用已建立的TCP连接,提高性能并减少网络延迟。 3. **请求与响应**:HttpClient通过...

Global site tag (gtag.js) - Google Analytics