`
奎河少年
  • 浏览: 24437 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HttpTool工具类

 
阅读更多
package tool;

import java.io.File;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpHost;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
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;
import org.testng.AssertJUnit;

public class HttpTool {
	
	private static String defaultUrl="data/";
	
	public static String doMultiPost(String url,Map<String,String> paramMap){
		return doMultiPost(url,paramMap,"utf-8",false);
	}
	
	public static String doMultiPost(String url,Map<String,String> paramMap,String charset,boolean setProxy){
						
		try  
        {                       
			if(!url.startsWith("http"))
				url="http://"+url;
              //  提交HTTP POST请求                                 
			HttpPost httpPost = new HttpPost(url);
			
            MultipartEntity reqEntity = new MultipartEntity();
            
        
            for (Map.Entry<String, String> entry : paramMap.entrySet()) {
            	if(entry.getValue().contains("file=")){
            		String filePath=entry.getValue().split("=")[1];
            		filePath=defaultUrl+filePath;

            		FileBody file = new FileBody(new File(filePath));
                    reqEntity.addPart(entry.getKey(), file);
            	
            	}else{
            		reqEntity.addPart(entry.getKey(), new StringBody(entry.getValue(),Charset.forName(charset)));
            	}
            }
            httpPost.setEntity(reqEntity);
              //  设置HTTP POST请求参数  
            HttpClient httpClient= new DefaultHttpClient();  
            //设置代理,可抓包测试,务必打开fiddler
            if(setProxy){
            	HttpHost proxy = new HttpHost("127.0.0.1", 8888);
			
            	httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
            }
            HttpResponse httpResponse = httpClient.execute(httpPost);
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if ( statusCode== 200||statusCode==201)  
            {  
                 
            	String result = EntityUtils.toString(httpResponse.getEntity(),charset);  
                 
                 return result;
            }else{
            	AssertJUnit.fail("请求返回异常!代码:"+httpResponse.getStatusLine().getStatusCode());
            }
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();
            AssertJUnit.fail("发送请求出现异常"+e.getMessage());
        }
		return null;
	}
	
	
	
	public static String doPost(String url, Map<String, String> params) {		
		return doPost(url, params,HTTP.UTF_8, false);
	}
	
	/**
	 * 通过POST发送请求
	 * @param url			请求的URL地址
	 * @param params		请求的查询参数,可以为null
	 * @param charset		字符集
	 * @param pretty		是否美化
	 * @return					返回请求响应的HTML 
	 */
	public static String doPost(String url, Map<String, String> paramMap, String charset,boolean setProxy) {
		try  
        {       
			if(!url.startsWith("http"))
				url="http://"+url;
			
              //  提交HTTP POST请求                                 
			HttpPost httpPost = new HttpPost(url);
			if(paramMap!=null){
	            List<NameValuePair> params=new ArrayList<NameValuePair>();  
	            //建立一个NameValuePair数组,用于存储欲传送的参数  
	            //添加参数  
	           
	            for (Map.Entry<String, String> entry : paramMap.entrySet()) {
	            	params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
	            }
	            //  设置HTTP POST请求参数  
	            httpPost.setEntity(new UrlEncodedFormEntity(params,charset));  
			} 
            HttpClient httpClient= new DefaultHttpClient();  
            
            //设置代理,可抓包测试,务必打开fiddler
            if(setProxy){
            	HttpHost proxy = new HttpHost("127.0.0.1", 8888);
			
            	httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
            }
            
            HttpResponse httpResponse = httpClient.execute(httpPost);  
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if ( statusCode== 200||statusCode==201)  
            {
                 
            	String result = EntityUtils.toString(httpResponse.getEntity(),charset);  
                 
                 return result;
            }else{
            	AssertJUnit.fail("请求返回异常!代码:"+httpResponse.getStatusLine().getStatusCode()+" url:"+url);
            }
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();
            AssertJUnit.fail("发送请求出现异常"+e.getMessage()+" url:"+url);
        }
		return null;
	}
	
	public static String doGet(String url, Map<String, String> params) {		
		return doGet(url, params,HTTP.UTF_8, false);
	}
	public static String doGet(String url, Map<String, String> params,boolean setProxy) {		
		return doGet(url, params,HTTP.UTF_8, setProxy);
	}
	public static String doGet(String url, Map<String, String> paramMap, String charset,boolean setProxy) {
		try  
        {                   
			
			if(!url.contains("?"))
				url+="?";
			if(!url.startsWith("http"))
				url="http://"+url;
			if(paramMap!=null){
	            //添加参数  
	           
	            for (Map.Entry<String, String> entry : paramMap.entrySet()) {
	            	url+=entry.getKey()+"="+entry.getValue()+"&";
	            }
	            url= url.substring(0, url.length()-1);
			} 
            HttpClient httpClient= new DefaultHttpClient();  
            HttpGet httpGet = new HttpGet(url);
            //设置代理,可抓包测试,务必打开fiddler
            if(setProxy){
            	HttpHost proxy = new HttpHost("127.0.0.1", 8888);
			
            	httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
            }
            
            HttpResponse httpResponse = httpClient.execute(httpGet);  
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if ( statusCode== 200||statusCode==201)  
            {  
                 
                 String result = EntityUtils.toString(httpResponse.getEntity(),charset);  
                 return result;
            }else{
            	AssertJUnit.fail("请求返回异常!代码:"+httpResponse.getStatusLine().getStatusCode()+" url:"+url);
            }
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();
            AssertJUnit.fail("发送请求出现异常"+e.getMessage()+" url:"+url);
        }
		return null;
	}
}

 

分享到:
评论
2 楼 奎河少年 2013-12-17  
MauerSu 写道
httpClient是哪个 版本的啊

4.1.2
1 楼 MauerSu 2013-12-05  
httpClient是哪个 版本的啊

相关推荐

    hibernate的大部分的工具类

    在这个“hibernate的大部分的工具类”压缩包中,我们很可能会找到一系列帮助简化Hibernate操作的实用工具类。这些工具类通常包括对数据操作的辅助方法、空值检查、分页处理以及HQL查询的通用分页功能。 首先,让...

    C++工具类-常用工具类源码

    在C++编程中,工具类是非常重要的一部分,它们提供了一系列通用功能,可以帮助开发者更高效地进行项目开发。本文将深入探讨标题"**C++工具类-常用工具类源码**"所涵盖的知识点,主要围绕文件处理、编码处理、字符串...

    【强2】30个java工具类

    使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...

    个人总结常用经典Utils工具类

    1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...

    Android快速开发系列 10个常用工具类 程序源码

    在Android应用开发中,工具类(Utils)是程序员经常使用的辅助模块,它们包含了一系列静态方法,用于处理各种常见的任务,从而提高代码的复用性和可维护性。本资源"Android快速开发系列 10个常用工具类 程序源码...

    Java生成订单号的工具类

    该工具类是Java编写下载即可使用,该工具类中有生成各种长度的订单号,有英文数字混合的,有数字的

    Excel导出工具类

    在IT行业中,Excel导出工具类是经常被用于数据处理和报表生成的模块。这个工具类通常是为了简化从应用程序中批量导出数据到Excel文件的过程,使得开发者可以更高效地处理大量的结构化信息。以下是对"Excel导出工具类...

    Android-简单的Android工具类包含ActivityFragmentApplication基类和各类常用工具类集合

    - Android开发中常见的工具类包括:字符串工具类(处理字符串格式化、拼接等)、日期时间工具类(格式化日期和时间)、网络工具类(检查网络状态、发起网络请求)、图片处理工具类(裁剪、压缩、加载图片)等。...

    java开发,30个常用工具类总结,全部来自项目实践中用到的工具类

    在Java开发中,工具类是程序员经常会用到的代码模块,它们封装了各种常见的操作,提高了代码的可重用性和可维护性。以下是对标题和描述中提到的几个常用工具类的详细说明: 1. **DateUtils**: `java.util.Date` 和 ...

    C#常用工具类代码集合Util第二版本(自己工作总结)

    C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...

    Java实体类字段生成工具类-将数据库表列字段转为Java实体类驼峰字段

    为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易读,且符合Java命名规范。通过使用该工具类,可以大大提高开发...

    Java校验参数工具类

    这是自己开发的一个参数校验的工具类,可用于对实例的属性进行非空校验。包括全部校验和任一校验两种校验方式。 举例:CheckParamsUtils.checkParamsAll(requestBean, "name", "age","gender");

    常用Java工具类

    在Java编程领域,工具类(Utility Class)是包含各种实用函数的静态类,它们提供了一种简化编程任务的方式。以下是对标题和描述中提到的一些常用Java工具类的详细解释: 1. **数据库池工具类**:数据库连接池是管理...

    SpringBoot中封装jdbc工具类

    现在的数据层的开发,大多会使用如MyBatis或JPA之类的开发工具。这些开发工具给我们的开发过程中带来了极大的便利。 但是在一些极端的场景下往往原生的jdbc方式操作数据库更灵活,性能更高。由于部分场景下MyBatis或...

    redis分布式锁工具类

    现在很多项目单机版已经不满足了,分布式变得越受欢迎,同时也带来很多问题,分布式锁也变得没那么容易实现,分享一个redis分布式锁工具类,里面的加锁采用lua脚本(脚本比较简单,采用java代码实现,无须外部调用...

    判断map对象是否为空等工具类

    这是一个工具类用于判断map中的键值对是否为空!普通判断若遇上空会报空指针异常!

    android线程池管理工具类

    android线程池管理工具类,用来管理线程的一些操作,避免重复new线程造成的资源浪费

    java文件下载的工具类

    文件下载的工具类java代码,设置编码格式,避免下载中文乱码

    字符串工具类

    字符串工具类,格式字符串、随机数生成、ip区间判断!

    MD5加密的工具类,可直接使用

    这是一个Java的工具类,进行加密操作的时候调用该类的方法就可以,工具类里面写了一个main,拿啦直接用就行。

Global site tag (gtag.js) - Google Analytics