zoukankan      html  css  js  c++  java
  • java中发送http请求的方法

    package org.jeecgframework.test.demo;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.InputStreamReader;  
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;  
    import java.io.UnsupportedEncodingException;  
    import java.net.ConnectException;
    import java.net.HttpURLConnection;  
    import java.net.Socket;  
    import java.net.URL;  
    import java.net.URLConnection;  
    import java.net.URLEncoder;  
    import java.util.ArrayList;  
    import java.util.HashMap;  
    import java.util.Iterator;  
    import java.util.List;  
    import java.util.Map;  
    import java.util.Map.Entry;  
     
    
    
    
    import java.util.Set;
    import java.util.SortedMap;
    
    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.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;  
    
    
     
    
    public class HttpClientHelper {  
        /**
         * @Description:使用HttpURLConnection发送post请求
         * @author:liuyc
         * @time:2016年5月17日 下午3:26:07
         */  
        public static String sendPost(String urlParam, Map<String, Object> params, String charset) {  
            StringBuffer resultBuffer = null;  
            // 构建请求参数  
            StringBuffer sbParams = new StringBuffer();  
            if (params != null && params.size() > 0) {  
                for (Entry<String, Object> e : params.entrySet()) {  
                    sbParams.append(e.getKey());  
                    sbParams.append("=");  
                    sbParams.append(e.getValue());  
                    sbParams.append("&");  
                }  
            }  
            HttpURLConnection con = null;  
            OutputStreamWriter osw = null;  
            BufferedReader br = null;  
            // 发送请求  
            try {  
                URL url = new URL(urlParam);  
                con = (HttpURLConnection) url.openConnection();  
                con.setRequestMethod("POST");  
                con.setDoOutput(true);  
                con.setDoInput(true);  
                con.setUseCaches(false);  
                con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
                if (sbParams != null && sbParams.length() > 0) {  
                    osw = new OutputStreamWriter(con.getOutputStream(), charset);  
                    osw.write(sbParams.substring(0, sbParams.length() - 1));  
                    osw.flush();  
                }  
                // 读取返回内容  
                resultBuffer = new StringBuffer();  
                int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));  
                if (contentLength > 0) {  
                    br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));  
                    String temp;  
                    while ((temp = br.readLine()) != null) {  
                        resultBuffer.append(temp);  
                    }  
                }  
            } catch (Exception e) {  
                throw new RuntimeException(e);  
            } finally {  
                if (osw != null) {  
                    try {  
                        osw.close();  
                    } catch (IOException e) {  
                        osw = null;  
                        throw new RuntimeException(e);  
                    } finally {  
                        if (con != null) {  
                            con.disconnect();  
                            con = null;  
                        }  
                    }  
                }  
                if (br != null) {  
                    try {  
                        br.close();  
                    } catch (IOException e) {  
                        br = null;  
                        throw new RuntimeException(e);  
                    } finally {  
                        if (con != null) {  
                            con.disconnect();  
                            con = null;  
                        }  
                    }  
                }  
            }  
     
            return resultBuffer.toString();  
        }  
     
       
        /**  
         * @Description:使用HttpClient发送post请求  
         * @author:liuyc  
         * @time:2016年5月17日 下午3:28:23  
         */  
        public static String httpClientPost(String urlParam, Map<String, Object> params, String charset) {  
            StringBuffer resultBuffer = null;  
            HttpClient client = new DefaultHttpClient();  
            HttpPost httpPost = new HttpPost(urlParam);  
            // 构建请求参数  
            List<NameValuePair> list = new ArrayList<NameValuePair>();  
            Iterator<Entry<String, Object>> iterator = params.entrySet().iterator();  
            while (iterator.hasNext()) {  
                Entry<String, Object> elem = iterator.next();  
                list.add(new BasicNameValuePair(elem.getKey(), String.valueOf(elem.getValue())));  
            }  
            BufferedReader br = null;  
            try {  
                if (list.size() > 0) {  
                    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);  
                    httpPost.setEntity(entity);
                }  
                HttpResponse response = client.execute(httpPost);  
                // 读取服务器响应数据  
                resultBuffer = new StringBuffer();  
                br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));  
                String temp;  
                while ((temp = br.readLine()) != null) {  
                    resultBuffer.append(temp);  
                }  
            } catch (Exception e) {  
                throw new RuntimeException(e);  
            } finally {  
                if (br != null) {  
                    try {  
                        br.close();  
                    } catch (IOException e) {  
                        br = null;  
                        throw new RuntimeException(e);  
                    }  
                }  
            }  
            return resultBuffer.toString();  
        }  
     
        //请求xml组装  
        public static String getRequestXml(SortedMap<String,Object> parameters){  
              StringBuffer sb = new StringBuffer();  
              sb.append("<xml>");  
              Set es = parameters.entrySet();  
              Iterator it = es.iterator();  
              while(it.hasNext()) {  
                  Map.Entry entry = (Map.Entry)it.next();  
                  String key = (String)entry.getKey();  
                  String value = (String)entry.getValue();  
                  if ("attach".equalsIgnoreCase(key)||"body".equalsIgnoreCase(key)||"sign".equalsIgnoreCase(key)) {  
                      sb.append("<"+key+">"+"<![CDATA["+value+"]]></"+key+">");  
                  }else {  
                      sb.append("<"+key+">"+value+"</"+key+">");  
                  }  
              }  
              sb.append("</xml>");  
              return sb.toString();  
          }  
        //生成签名  
        public static String createSign(String characterEncoding,SortedMap<String,Object> parameters){  
              StringBuffer sb = new StringBuffer();  
              Set es = parameters.entrySet();  
              Iterator it = es.iterator();  
              while(it.hasNext()) {  
                  Map.Entry entry = (Map.Entry)it.next();  
                  String k = (String)entry.getKey();  
                  Object v = entry.getValue();  
                  if(null != v && !"".equals(v)  
                          && !"sign".equals(k) && !"key".equals(k)) {  
                      sb.append(k + "=" + v + "&");  
                  }  
              }  
              sb.append("key=" + "");  
              String sign = MD5.md5(sb.toString()).toUpperCase();  
              return sign;  
          }  
        //请求方法  
        public static String httpsRequest(String requestUrl, String requestMethod, String data) {  
              try {  
                   
                  URL url = new URL(requestUrl);  
                  HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
                  
                  conn.setDoOutput(true);  
                  conn.setDoInput(true);  
                  conn.setUseCaches(false);  
                  // 设置请求方式(GET/POST)  
                  conn.setRequestMethod(requestMethod);  
                  conn.setRequestProperty("content-type", "application/json");
                 // conn.setRequestProperty("content-type", "text/xml;charset=utf-8");
                  // 当outputStr不为null时向输出流写数据  
                  if (null != data) {  
                      OutputStream outputStream = conn.getOutputStream();  
                      // 注意编码格式  
                      outputStream.write(data.getBytes("UTF-8"));  
                      outputStream.close();  
                  }  
                  // 从输入流读取返回内容  
                  InputStream inputStream = conn.getInputStream();  
                  InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
                  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
                  String str = null;  
                  StringBuffer buffer = new StringBuffer();  
                  while ((str = bufferedReader.readLine()) != null) {  
                      buffer.append(str);  
                  }  
                  // 释放资源  
                  bufferedReader.close();  
                  inputStreamReader.close();  
                  inputStream.close();  
                  inputStream = null;  
                  conn.disconnect();  
                  return buffer.toString();  
              } catch (ConnectException ce) {  
                  System.out.println("连接超时:{}"+ ce);  
              } catch (Exception e) {  
                  System.out.println("https请求异常:{}"+ e);  
              }  
              return null;  
          }
        public static void main(String[] args) {
            String requestUrl,requestMethod,outputStr;
            requestUrl="(此处填写你要请求的url地址)";
            requestMethod="POST";
            outputStr="<xml>"+
                        "<appid><![CDATA[wx2421b1c4370ec43b]]></appid>"+
                        "<mch_id><![CDATA[10000100]]></mch_id>"+
                        "<device_info><![CDATA[1]]></device_info>"+
                        "<nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>"+
                        "<sign><![CDATA[6245928B869A39BC75A421200A74002E]]></sign>"+
                        "<result_code><![CDATA[SUCCESS]]></result_code>"+
                        "<return_code><![CDATA[SUCCESS]]></return_code>"+
                        "<err_code><![CDATA[1004400740201409030005092168]]></err_code>"+
                        "<err_code_des><![CDATA[1004400740201409030005092168]]></err_code_des>"+
                        "<openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>"+
                        "<is_subscribe><![CDATA[Y]]></is_subscribe>"+
                        "<trade_type><![CDATA[JSAPI]]></trade_type>"+
                        "<bank_type><![CDATA[CFT]]></bank_type>"+
                        "<total_fee><![CDATA[1]]></total_fee>"+
                        "<fee_type><![CDATA[CNY]]></fee_type>"+
                        "<cash_fee><![CDATA[168]]></cash_fee>"+
                        "<cash_fee_type><![CDATA[1004400740201409030005092168]]></cash_fee_type>"+
                        "<transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>"+
                        "<out_trade_no><![CDATA[137999992017032919767558710]]></out_trade_no>"+
                        "<time_end><![CDATA[20140903131540]]></time_end>"+
                        "<trade_state><![CDATA[1]]></trade_state>"+
                        "<attach><![CDATA[支付测试]]></attach>"+
                        "</xml>";
    
        //错误的json请求
            // String data = "[{"id":1,"name":"o2o_V3.0新版发布","content":"o2o_V3.0新版发布","time":"2015-05-11 03:12:51"}]";
            String data = "{"id":1,"name":"o2o_V3.0新版发布","content":"o2o_V3.0新版发布","time":"2015-05-11 03:12:51"}";
            String xml=httpsRequest(requestUrl,requestMethod,data);
            System.out.println(xml);
            //System.out.println(outputStr);
        }
          
    }  

    请求的时候只需要调用这个类中的httpsRequest方法,requestUrl代表的就是请求的url地址,requestMethod代表的是以Post或者Get方法请求方式,data就是请求的参数;

  • 相关阅读:
    分析ASP.NET读取XML文件4种方法
    WordPress 主题教程 #4a:Header 模板
    WordPress 主题教程 #4b:Header 模板 2
    倍受好评的美国主机JustHost使用全攻略教程
    单链表的创建、插入、删除、倒置操作
    WordPress 主题教程:从零开始制作 WordPress 主题
    google adsense 设置建议
    PHP:10个不常见却非常有用的PHP函数
    WordPress 主题教程 #2:模板文件和模板
    必须掌握的八个cmd命令行
  • 原文地址:https://www.cnblogs.com/2016-10-07/p/6783205.html
Copyright © 2011-2022 走看看