zoukankan      html  css  js  c++  java
  • java模拟http请求调用远程接口工具类

    package ln;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 用于模拟HTTP请求中GET/POST方式 
     * @author landa
     *
     */
    public class HttpUtils {  
        /** 
         * 发送GET请求 
         *  
         * @param url 
         *            目的地址 
         * @param parameters 
         *            请求参数,Map类型。 
         * @return 远程响应结果 
         */  
        public static String sendGet(String url, Map<String, String> parameters) { 
            String result="";
            BufferedReader in = null;// 读取响应输入流  
            StringBuffer sb = new StringBuffer();// 存储参数  
            String params = "";// 编码之后的参数
            try {
                // 编码请求参数  
                if(parameters.size()==1){
                    for(String name:parameters.keySet()){
                        sb.append(name).append("=").append(
                                java.net.URLEncoder.encode(parameters.get(name),  
                                "UTF-8"));
                    }
                    params=sb.toString();
                }else{
                    for (String name : parameters.keySet()) {  
                        sb.append(name).append("=").append(  
                                java.net.URLEncoder.encode(parameters.get(name),  
                                        "UTF-8")).append("&");  
                    }  
                    String temp_params = sb.toString();  
                    params = temp_params.substring(0, temp_params.length() - 1);  
                }
                String full_url = url + "?" + params; 
                System.out.println(full_url); 
                // 创建URL对象  
                java.net.URL connURL = new java.net.URL(full_url);  
                // 打开URL连接  
                java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL  
                        .openConnection();  
                // 设置通用属性  
                httpConn.setRequestProperty("Accept", "*/*");  
                httpConn.setRequestProperty("Connection", "Keep-Alive");  
                httpConn.setRequestProperty("User-Agent",  
                        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");  
                // 建立实际的连接  
                httpConn.connect();  
                // 响应头部获取  
                Map<String, List<String>> headers = httpConn.getHeaderFields();  
                // 遍历所有的响应头字段  
                for (String key : headers.keySet()) {  
                    System.out.println(key + "" + headers.get(key));  
                }  
                // 定义BufferedReader输入流来读取URL的响应,并设置编码方式  
                in = new BufferedReader(new InputStreamReader(httpConn  
                        .getInputStream(), "UTF-8"));  
                String line;  
                // 读取返回的内容  
                while ((line = in.readLine()) != null) {  
                    result += line;  
                }  
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try {  
                    if (in != null) {  
                        in.close();  
                    }  
                } catch (IOException ex) {  
                    ex.printStackTrace();  
                }  
            }
            return result ;
        }  
      
        /** 
         * 发送POST请求 
         *  
         * @param url 
         *            目的地址 
         * @param parameters 
         *            请求参数,Map类型。 
         * @return 远程响应结果 
         */  
        public static String sendPost(String url, Map<String, String> parameters) {  
            String result = "";// 返回的结果  
            BufferedReader in = null;// 读取响应输入流  
            PrintWriter out = null;  
            StringBuffer sb = new StringBuffer();// 处理请求参数  
            String params = "";// 编码之后的参数  
            try {  
                // 编码请求参数  
                if (parameters.size() == 1) {  
                    for (String name : parameters.keySet()) {  
                        sb.append(name).append("=").append(  
                                java.net.URLEncoder.encode(parameters.get(name),  
                                        "UTF-8"));  
                    }  
                    params = sb.toString();  
                } else {  
                    for (String name : parameters.keySet()) {  
                        sb.append(name).append("=").append(  
                                java.net.URLEncoder.encode(parameters.get(name),  
                                        "UTF-8")).append("&");  
                    }  
                    String temp_params = sb.toString();  
                    params = temp_params.substring(0, temp_params.length() - 1);  
                }  
                // 创建URL对象  
                java.net.URL connURL = new java.net.URL(url);  
                // 打开URL连接  
                java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL  
                        .openConnection();  
                // 设置通用属性  
                httpConn.setRequestProperty("Accept", "*/*");  
                httpConn.setRequestProperty("Connection", "Keep-Alive");  
                httpConn.setRequestProperty("User-Agent",  
                        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");  
                // 设置POST方式  
                httpConn.setDoInput(true);  
                httpConn.setDoOutput(true);  
                // 获取HttpURLConnection对象对应的输出流  
                out = new PrintWriter(httpConn.getOutputStream());  
                // 发送请求参数  
                out.write(params);  
                // flush输出流的缓冲  
                out.flush();  
                // 定义BufferedReader输入流来读取URL的响应,设置编码方式  
                in = new BufferedReader(new InputStreamReader(httpConn  
                        .getInputStream(), "UTF-8"));  
                String line;  
                // 读取返回的内容  
                while ((line = in.readLine()) != null) {  
                    result += line;  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                try {  
                    if (out != null) {  
                        out.close();  
                    }  
                    if (in != null) {  
                        in.close();  
                    }  
                } catch (IOException ex) {  
                    ex.printStackTrace();  
                }  
            }  
            return result;  
        }  
      
        /** 
         * 主函数,测试请求 
         *  
         * @param args 
         */  
        public static void main(String[] args) {  
            Map<String, String> parameters = new HashMap<String, String>();  
            parameters.put("name", "sarin");  
            String result =sendGet("http://www.baidu.com", parameters);
            System.out.println(result); 
        }  
    }  
  • 相关阅读:
    中国石油昆仑加油卡
    157 01 Android 零基础入门 03 Java常用工具类01 Java异常 01 异常介绍 02 异常内容简介
    156 01 Android 零基础入门 03 Java常用工具类01 Java异常 01 异常介绍 01 Java常用工具类简介
    155 01 Android 零基础入门 02 Java面向对象 07 Java多态 07 多态知识总结 01 多态总结
    154 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 05 匿名内部类
    153 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 04 方法内部类
    152 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 03 静态内部类
    151 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 02 成员内部类
    150 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类概述 01 内部类概述
    149 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)07 接口的继承
  • 原文地址:https://www.cnblogs.com/vitre/p/5474166.html
Copyright © 2011-2022 走看看