java模拟http请求工具类

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 + "\t:\t" + 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); 
    }  
}  

本文转自:http://www.cnblogs.com/vitre/p/5474166.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java Postman 工具是一种用于 HTTP 通讯工具的类,它的作用主要是用于模拟 HTTP 请求和响应的过程。这个工具类适用于 Java 语言开发环境,可以通过编写 Java 代码来模拟发送 HTTP 请求。Postman 工具类的主要功能包括: 1. 发送 HTTP 请求:可以使用 Java Postman 工具类来发送各种类型的 HTTP 请求,包括 GET、POST、PUT、DELETE 等。 2. 处理 HTTP 响应:Java Postman 工具类能够接收 HTTP 响应,并对响应结果进行处理,比如提取响应的状态码、响应头、响应体等信息。 3. 模拟请求参数:Java Postman 工具类可以模拟请求参数,包括请求头、请求体、查询参数、路径参数等。 4. 使用变量:Java Postman 工具类支持使用变量,可以在请求和响应中使用变量来动态替换值。 Java Postman 工具类是一个非常实用的工具类,特别是在开发 Java Web 应用程序时。通过使用 Java Postman 工具类,可以更加方便地进行接口测试和调试工作,提高程序开发的效率和质量。同时,Java Postman 工具类也可以帮助开发者更好地理解 HTTP 请求和响应的过程,对于深入了解 HTTP 协议也有一定帮助作用。 ### 回答2: Java Postman工具类是一个用于向API发送HTTP请求Java类库/包。它提供了简单易用的API,使用户能够使用GET,POST,PUT,DELETE等HTTP请求方法与API进行交互。Java Postman工具类通常用于测试和调试RESTful API,例如在开发过程中测试API的响应。 Java Postman工具类可以在Java应用程序中轻松地发送HTTP请求并获取响应。它提供了许多功能,例如: 1.可以设置HTTP请求头 2.可以设置请求方法 3.可以将请求体添加到请求中 4.可以将查询参数添加到URL中 5.可以发送HTTP请求并获取响应 6.可以解析响应体 使用Java Postman工具类,我们可以测试API的请求和响应。例如,我们可以使用GET方法获取资源,使用POST方法创建资源,使用PUT方法更新资源,使用DELETE方法删除资源等。 总之,Java Postman工具类是一款非常有用的Java类库,它可以帮助开发者轻松地与API进行交互和测试。使用Java Postman工具类可以大大提高开发效率,减少调试时间。 ### 回答3: Java Postman 工具类是一种用于发送 HTTP 请求并接收响应的工具类,常用于测试 Web API 接口。利用这个工具类可以模拟客户端请求,并验证服务器响应的正确性,帮助开发人员快速地定位问题并解决。 Java Postman 工具类是基于 Java 编程语言开发的一个类库。通过使用该类库,可以方便地构造 HTTP 请求,并得到服务器响应。该类库的主要功能包括:构造请求,设置请求头,设置请求参数,发送请求,接收响应,解析响应,等等。 使用 Java Postman 工具类,可以在测试 Web API 接口时进行如下操作: 1.发送 GET 请求 2.发送 POST 请求 3.发送 PUT 请求 4.发送 DELETE 请求 5.设置请求头信息 6.设置请求参数 7.添加 Cookie 信息 8.设置代理信息 9.设置超时时间 10.获取服务器响应状态码及响应内容等信息 此外,Java Postman 工具类还支持通过正则表达式来获取具体的响应信息,使用更加灵活、方便。在进行接口测试时,使用 Java Postman 工具类可大大提高工作效率及测试质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值