package com.qianfeng.gl4study.snssdk.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.*; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.LinkedList; import java.util.Set; /** * Http网络请求的工具类,包含了Get,Post,Put,Delete四种请求方法的支持 * Created with IntelliJ IDEA. * I'm glad to share my knowledge with you all. * User:Gaolei * Date:2015/3/10 * Email:pdsfgl@live.com */ public class HttpTool { /** * 执行Get请求 * @param url 请求的网址和数据 * @return 字节数组,网络数据 */ public static byte[] get(String url){ byte[] ret = null; if(url!=null){ HttpGet request = new HttpGet(url); ret = directryHttpRequest(request); } return ret; } /** * 执行Delete请求 * @param url 请求的网址和数据 * @return 字节数组,网络数据 */ public static byte[] delete(String url){ byte[] ret = null; if(url!=null){ HttpDelete request = new HttpDelete(url); ret = directryHttpRequest(request); } return ret; } /** * 本方法实现Get,Delete请求的通用代码 * @param request * @return */ private static byte[] directryHttpRequest(HttpRequestBase request) { byte[] ret = null; HttpClient client = new DefaultHttpClient(); HttpParams httpParams = client.getParams(); // 请求延时时间 HttpConnectionParams.setConnectionTimeout(httpParams, 3000); // 读取内容时间 HttpConnectionParams.setSoTimeout(httpParams, 3000); try { HttpResponse response = client.execute(request); StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode() == 200){ HttpEntity entity = response.getEntity(); ret = EntityUtils.toByteArray(entity); } } catch (IOException e) { e.printStackTrace(); } return ret; } /** * 执行Post请求,采用key=value&key=value的形式 * @param url 请求的网址 * @param params key=value的集合 * @return 字节数组,网络数据 */ public static byte[] post(String url,HashMap<String,String> params){ return post(url,params,"UTF-8"); } /** * 执行Post请求,采用key=value&key=value的形式 * @param url 请求的网址 * @param params key=value的集合 * @return 字节数组,网络数据 */ public static byte[] post(String url,HashMap<String,String> params,String encoding){ byte[] ret = null; if(url!=null){ HttpPost request = new HttpPost(url); ret = processEntityRequest(request,params,encoding); } return ret; } /** * 执行Put请求 * @param url * @param params * @param encoding * @return */ public static byte[] put(String url,HashMap<String,String > params,String encoding){ byte[] ret = null; if(url!=null){ HttpPut request = new HttpPut(url); ret = processEntityRequest(request,params,encoding); } return ret; } /** * 本方法实现Post,Put请求的通用代码 * @param request * @param params * @param encoding * @return */ private static byte[] processEntityRequest(HttpEntityEnclosingRequestBase request, HashMap<String,String > params,String encoding){ byte[] ret = null; if(request!=null) { if (params != null) { //将params中的key=value组合成key=value&key=value的形式,用来向服务器提交 LinkedList<NameValuePair> parameters = new LinkedList<NameValuePair>(); //获取HashMap中的key集合 Set<String> keySet = params.keySet(); for (String key : keySet) { String value = params.get(key); parameters.add(new BasicNameValuePair(key, value)); } try { if (encoding == null) { encoding = "UTF-8"; } //第二个参数十分重要,指定编码格式 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, encoding); //设置提交的数据 request.setEntity(entity); } catch (UnsupportedEncodingException e) { //不支持的编码异常 e.printStackTrace(); } } HttpClient client = new DefaultHttpClient(); HttpParams httpParams = client.getParams(); // 请求延时时间 HttpConnectionParams.setConnectionTimeout(httpParams, 3000); // 读取内容时间 HttpConnectionParams.setSoTimeout(httpParams, 3000); try { HttpResponse response = client.execute(request); StatusLine statusLine = response.getStatusLine(); if (statusLine.getStatusCode() == 200) { HttpEntity entity = response.getEntity(); ret = EntityUtils.toByteArray(entity); } } catch (IOException e) { e.printStackTrace(); } } return ret; } }