Http请求工具类HttpUtil

来源:互联网 发布:淘宝非实名认证手机卡 编辑:程序博客网 时间:2024/06/08 02:18

 

httpGet + hostname in certificate didn't match   报错!

HTTPS加密引起的。

解决https需要验证问题

Hostname in certificate didn't match?

HttpClient工具类

 

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.URL;import java.net.URLConnection;import java.util.Map;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.log4j.Logger;public class HttpUtil {private static final Logger logger = Logger.getLogger(HttpUtil.class);/** * http post请求 * @param url地址 * @param postContentpost内容格式为param1=value&param2=value2&param3=value3 * @return * @throws IOException */public static String httpPostRequest(URL url, String postContent) throws Exception{OutputStream outputstream = null;BufferedReader in = null;try{URLConnection httpurlconnection = url.openConnection();httpurlconnection.setConnectTimeout(10 * 1000);httpurlconnection.setDoOutput(true);httpurlconnection.setUseCaches(false);OutputStreamWriter out = new OutputStreamWriter(httpurlconnection.getOutputStream(), "UTF-8");out.write(postContent);out.flush();StringBuffer result = new StringBuffer();in = new BufferedReader(new InputStreamReader(httpurlconnection.getInputStream(),"UTF-8"));String line;while ((line = in.readLine()) != null){result.append(line);}return result.toString();}catch(Exception ex){logger.error("post请求异常:" + ex.getMessage());throw new Exception("post请求异常:" + ex.getMessage());}finally{if (outputstream != null){try{outputstream.close();}catch (IOException e){outputstream = null;}}if (in != null){try{in.close();}catch (IOException e){in = null;}}}}/** * 通过httpClient进行post提交 * @param url提交url地址 * @param charset字符集 * @param keys参数名 * @param values参数值 * @return * @throws Exception */public static String HttpClientPost(String url , String charset , String[] keys , String[] values) throws Exception{HttpClient client = null;PostMethod post = null;String result = "";int status = 200;try {           client = new HttpClient();                               //PostMethod对象用于存放地址             //总账户的测试方法               post = new PostMethod(url);                        //NameValuePair数组对象用于传入参数               post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=" + charset);//在头文件中设置转码               String key = "";               String value = "";               NameValuePair temp = null;               NameValuePair[] params = new NameValuePair[keys.length];               for (int i = 0; i < keys.length; i++) {               key = (String)keys[i];               value = (String)values[i];               temp = new NameValuePair(key , value);                  params[i] = temp;               temp = null;               }              post.setRequestBody(params);                //执行的状态              status = client.executeMethod(post);               logger.info("status = " + status);                             if(status == 200){              result = post.getResponseBodyAsString();              }               } catch (Exception ex) {// TODO: handle exceptionthrow new Exception("通过httpClient进行post提交异常:" + ex.getMessage() + " status = " + status);}finally{post.releaseConnection(); }return result;}/** * 字符串处理,如果输入字符串为null则返回"",否则返回本字符串去前后空格。 * @param inputStr输入字符串 * @returnstring 输出字符串 */    public static String doString(String inputStr){    //如果为null返回""        if(inputStr == null || "".equals(inputStr) || "null".equals(inputStr)){    return "";    }        //否则返回本字符串把前后空格去掉    return inputStr.trim();    }    /**     * 对象处理,如果输入对象为null返回"",否则则返回本字符对象信息,去掉前后空格     * @param object     * @return     */    public static String doString(Object object){    //如果为null返回""        if(object == null || "null".equals(object) || "".equals(object)){    return "";    }        //否则返回本字符串把前后空格去掉    return object.toString().trim();    }    }

 

使用:

String returnXML = HttpUtil.httpPostRequest(new URL(sendURL), postContent);

 

 工具类2:

public class HttpUtil {private static Log log = LogFactory.getLog(HttpUtil.class);private static final String DEFAULT_HTTP_CHARSET = "UTF-8";private static final String GETID_URL = ProPertiesUtil.getValue("/server.properties", "getidurl");private static DefaultHttpClient httpClient = new DefaultHttpClient();private HttpUtil() {}public static String sendHttpByPost(String url,Map map) throws Exception{HttpClient httpClient = new HttpClient(HttpClient.TRANSMODE_FORM,HttpClient.METHOD_POST);/*Map<String,String> paramMap = new HashMap<String,String>();paramMap.put("wf_type_id",wf_type_id.toString());paramMap.put("customer_id",customer_id.toString());paramMap.put("thirdparty_id",thirdparty_id.toString());paramMap.put("order_no",order_no);paramMap.put("order_idss",order_idss);paramMap.put("user_id",user_id.toString());paramMap.put("wf_code",wf_code);paramMap.put("step",step.toString());paramMap.put("wf_id", wf_id.toString());*/httpClient.setUrl(url);httpClient.setNameValuePair(map);return  httpClient.getResponseString();}public static String httpGet(String url) {String strReturn = "";HttpUriRequest request = new HttpGet(url);try {HttpResponse response = httpClient.execute(request);HttpEntity entity = response.getEntity();strReturn = EntityUtils.toString(entity,DEFAULT_HTTP_CHARSET);}catch(Exception e) {// 网络异常log.error(e.getMessage());}return strReturn;}public static void main(String[] args) throws JSONException, Exception{String strUrl1 = "http://localhost:8084/test/order/addOrder.do?orderCode=123456789&totalFee=39800";System.out.println(httpGet(strUrl1));}}

 

或:

public String getMedia(String token,String mediaID){logger.info("getMedia=============start");String url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token="+token+"&media_id="+mediaID;        BufferedInputStream bis = null;    FileOutputStream fos = null;    String imgFilePath = null;try {           HttpClient client = new DefaultHttpClient();             HttpGet httpGet = new HttpGet(url);             HttpResponse response = client.execute(httpGet);            HttpEntity entity = response.getEntity();                                   // 根据内容类型获取扩展名           String fileExt = getFileEndWitsh(entity.getContentType().getValue());           if(StringUtils.isEmpty(fileExt)) {           logger.error("上传图片出错:content-Type" +entity.getContentType().getValue() + EntityUtils.toString(entity, "UTF-8"));           return null;           }           String tmpImgPath = ProPertiesUtil.getValue("/auction.properties", "tmp_img_path");                 imgFilePath = getPhysicalPath(tmpImgPath) + File.separator + mediaID + fileExt;;// 新生成的图片              bis = new BufferedInputStream(entity.getContent());           fos = new FileOutputStream(new File(imgFilePath));           byte[] buf = new byte[8096];           int size = 0;           while ((size = bis.read(buf)) != -1)             fos.write(buf, 0, size);           fos.close();           bis.close();           logger.info("下载媒体文件成功,filePath="+ imgFilePath);         } catch (Exception e) {         imgFilePath = null;         logger.error("下载媒体文件失败:",e);         } finally {         if (bis != null) {         try {         bis.close();         } catch (IOException e) {         logger.error("连接微信出错:",e);         }        }        if (fos != null) {             try {             fos.close();             } catch (IOException e) {             logger.error("连接微信出错:",e);             }        }        }return imgFilePath;    }

 

HttpClient httpclient = new DefaultHttpClient();HttpPost post = new HttpPost(IMAGE_FTP_PATH);File file = new File(filePath);FileBody fileBody = new FileBody(file);try {MultipartEntity entity = new MultipartEntity();entity.addPart("file", fileBody);post.setEntity(entity);HttpResponse response = httpclient.execute(post);logger.info("图片服务器返回code:" + response.getStatusLine().getStatusCode());if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {HttpEntity entitys = response.getEntity();if (entitys != null) {//resultLen = entity.getContentLength();returnStr = EntityUtils.toString(entitys);logger.info("图片服务器返回returnStr:" + returnStr);}}httpclient.getConnectionManager().shutdown();//删除本地//file.delete();} catch (UnsupportedEncodingException e) {logger.error(e.getMessage(), e);} catch (ClientProtocolException e) {logger.error(e.getMessage(), e);} catch (IOException e) {logger.error(e.getMessage(), e);}

 

 

3、

 

 

package com.common.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.Map;/**  * @author Administrator  *  */public class HttpUtils {/**  * 使用Get方式获取数据  *   * @param url  *            URL包括参数,http://HOST/XX?XX=XX&XXX=XXX  * @param charset  * @return  */public static String sendGet(String url) {String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接  URLConnection connection = realUrl.openConnection();// 设置通用的请求属性  connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接  connection.connect();// 定义 BufferedReader输入流来读取URL的响应  in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流  finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/**   * POST请求,字符串形式数据   * @param url 请求地址   * @param param 请求数据   * @param charset 编码方式   */public static String sendPostUrl(String url, String param, String charset) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接  URLConnection conn = realUrl.openConnection();// 设置通用的请求属性  conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行  conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流  out = new PrintWriter(conn.getOutputStream());// 发送请求参数  out.print(param);// flush输出流的缓冲  out.flush();// 定义BufferedReader输入流来读取URL的响应  in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流  finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/**   * POST请求,Map形式数据   * @param url 请求地址   * @param param 请求数据   * @param charset 编码方式   */public static String sendPost(String url, Map<String, String> param,String charset) {StringBuffer buffer = new StringBuffer();if (param != null && !param.isEmpty()) {for (Map.Entry<String, String> entry : param.entrySet()) {buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue())).append("&");}}buffer.deleteCharAt(buffer.length() - 1);PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接  URLConnection conn = realUrl.openConnection();// 设置通用的请求属性  conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行  conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流  out = new PrintWriter(conn.getOutputStream());// 发送请求参数  out.print(buffer);// flush输出流的缓冲  out.flush();// 定义BufferedReader输入流来读取URL的响应  in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流  finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}public static void main(String[] args) {}}

 

 

0 0