您的位置:首页 > 理论基础 > 计算机网络

发送http请求(多用途测试,这里用以测试cookie) ,java代码测试例子

2016-08-02 15:53 555 查看
package com.test.myTest;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.URISyntaxException;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;

import java.util.List;

import java.util.Map;

import javax.servlet.http.Cookie;

import com.google.gson.Gson;

/**

 * 功能说明:发送http请求

 *

 */

public class HttpRequestUtil {

    /**

     * 向指定URL发送GET方法的请求

     *

     * @param url

     *            发送请求的URL

     * @param param

     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

     * @return URL 所代表远程资源的响应结果

     */

    public static String sendGet(String url, String param) {

        String result = "";

        BufferedReader in = null;

        try {

            String urlNameString = url + "?" + param;

            URL realUrl = new URL(urlNameString);

            // 打开和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();

            // 获取所有响应头字段

            Map<String, List<String>> map = connection.getHeaderFields();

            // 遍历所有的响应头字段

//            for (String key : map.keySet()) {

//                System.out.println(key + "--->" + map.get(key));

//            }

            // 定义 BufferedReader输入流来读取URL的响应

            in = new BufferedReader(new InputStreamReader(

                    connection.getInputStream()));

            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;

    }

    /**

     * 向指定 URL 发送POST方法的请求

     *

     * @param url

     *            发送请求的 URL

     * @param param

     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

     * @return 所代表远程资源的响应结果

     */

    public static String sendPost(String url, String param) {

        PrintWriter out = null;

        BufferedReader in = null;

        StringBuffer result =new StringBuffer();

        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()));

            String line;

            while ((line = in.readLine()) != null) {

                result.append(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.toString();

    }

    /**

     *

     * @功能说明:

     * @param host

     * 请求主机地址,如http://www.*****.com/cesso/getUserInfo.shtml

     * @param param

     * 参数串 passportId=123&code=2w3e4r

     * @return String

     * @exception:

     */

    public static String sendHttpPost(String host, String param) {

        // 返回结果

        String response = "";

        PrintWriter out = null;

        BufferedReader in = null;

        try {

            URL realUrl = new URL(host);

            // 打开和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)");

            

            //conn.setRequestProperty("Cookie","JSESSIONID="+param);

            conn.setRequestProperty("Cookie","com.ceair.cesso="+param);

            // 发送POST请求必须设置如下两行

            conn.setDoOutput(true);

            conn.setDoInput(true);<
4000
br />
            // UTF-8编码

            conn.setRequestProperty("Accept-Charset","UTF-8");

            // 获取URLConnection对象对应的输出流

            out = new PrintWriter(conn.getOutputStream());

            // 发送请求参数

            out.print("");

            // flush输出流的缓冲

            out.flush();

            // 定义BufferedReader输入流来读取URL的响应

            in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

            String line;

            while ((line = in.readLine()) != null) {

                response += line;

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        //关闭输出流、输入流

        finally {

            try {

                if (out != null) {

                    out.close();

                }

                if (in != null) {

                    in.close();

                }

            } catch (IOException ex) {

                ex.printStackTrace();

            }

        }

        return response;

    }

    

    /**

     * 返回手机号码

     */

    private static String[] telFirst="134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153".split(",");  

    private static String getTel() {  

        int index=getNum(0,telFirst.length-1);  

        String first=telFirst[index];  

        String second=String.valueOf(getNum(1,888)+10000).substring(1);  

        String thrid=String.valueOf(getNum(1,9100)+10000).substring(1);  

        return first+second+thrid;  

    }  

    

    public static int getNum(int start,int end) {  

        return (int)(Math.random()*(end-start+1)+start);  

    }  

    public static void main(String[] args) throws IOException, URISyntaxException {

        //内层循环100万,外层50次

//        for (int i = 0; i < 50; i++) {

//            for (int j = 0; j < 1000000; j++) {

//                String mobileNo = "159****7839";

//                HttpRequestUtil.sendPost("http://172.*.*.**:9080/cesso/mobile!sendDynamicPassword.shtml", "mobileNo="+mobileNo);

//                System.out.println(j+"----"+mobileNo);

//            }

//            System.err.println(i);

//        }

//        String mobileNo = "159****7839";

//        HttpRequestUtil.sendPost("http://172.**.*.**:9080/cesso/mobile!sendDynamicPassword.shtml", "mobileNo="+mobileNo);

        String host="http://172.**.*.***:9080/cesso/login-static!check.shtml";

       

        //String passportIdCokie = "yGntlcIrKtUzkufzOeDw4ugR.ceagentServer2";

        String cessoString = "update";

        String response= sendHttpPost(host, cessoString);

        System.out.println(response);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息