java发送http请求

【题目】

java实现论坛灌水程序:
主要是请求连接、登录、获得session信息

这里写图片描述

这里写图片描述

这里写图片描述

【回顾】

让你的飞秋死机:建立UDP连接连续发送多条消息

这里写图片描述

【代码】

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.util.List;
import java.util.Map;

public class JavaHTTP {

    private String cookieGlobal="";//全局变量
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JavaHTTP jhh=new JavaHTTP();
        //jhh.sendGet("http://www.baidu.com","");
      jhh.sendPost("http://localhost/agileone/index.php/common/login","username=admin&password=admin&savelogin=true",jhh.cookieGlobal);//获得“successful”
    }

    //发送get请求
    public void sendGet(String urlAddress,String cookie){
        try{
            //1.建立连接并发送请求

        HttpURLConnection urlConnection=null;
        URL url=new URL(urlAddress);
        urlConnection=(HttpURLConnection)url.openConnection();//建立连接,打开地址
        urlConnection.setConnectTimeout(5000);//set开头的是设置连接参数,超时5000ms,超过则放弃连接
        urlConnection.setReadTimeout(5000);//读超时时间
        urlConnection.setConnectTimeout(5000);  
        urlConnection.setUseCaches(false);//是否使用缓存:不使用
        urlConnection.setRequestProperty("Cookie",cookie);//设置请求的属性
        urlConnection.connect();//发送get请求

        //2.获取响应内容,验证是否请求成功
        BufferedReader bf=new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"UTF-8"));
        //先读输入流,再将其放入缓冲区
        String line=bf.readLine();
        while(line!=null){
            System.out.println(line);
            line=bf.readLine();//输出读到的内容
        }
    }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    //发送POST请求
    public void sendPost(String urlAddress,String paramValue,String cookie ){//多一个post正文参数
        try{
            //1.建立连接并发送请求

        HttpURLConnection urlConnection=null;
        URL url=new URL(urlAddress);
        urlConnection=(HttpURLConnection)url.openConnection();
        urlConnection.setConnectTimeout(5000);
        urlConnection.setReadTimeout(5000);
        urlConnection.setConnectTimeout(5000);  
        urlConnection.setUseCaches(false);
        urlConnection.setDoOutput(true);//允许输出
        urlConnection.setRequestProperty("Cookie",cookie);//"password=admin;username=admin;PHPSESSID=...."
        urlConnection.connect();

        //比get方法多了下面三行
        PrintWriter pw=new PrintWriter(urlConnection.getOutputStream());
        pw.print(paramValue);
        pw.flush();


        //2.获取响应内容,验证是否请求成功
        BufferedReader bf=new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"UTF-8"));
        //先读输入流,再将其放入缓冲区
        String line=bf.readLine();
        while(line!=null){
            System.out.println(line);
            line=bf.readLine();//输出读到的内容,即响应的正文
        }

        //输出响应的头,找cookie值
        //System.out.println(urlConnection.getHeaderField("Set-Cookie"));
        Map<String,List<String>> map=urlConnection.getHeaderFields();
        List list=(List)map.get("Set-Cookie");

        for(int i=0;i<list.size();i++){
            String temp=list.get(i).toString();
            String value[]=temp.split(":");
            this.cookieGlobal+=value[0]+";";
        }
        System.out.println(cookie);
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

【演示效果】

这里写图片描述

这里写图片描述

这里写图片描述

【说明】

代码未运行,因测试网址已经失效。
若编码出错,请见谅。
发帖部分留作思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值