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