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

java发送http请求

2017-12-13 21:37 429 查看
【题目】

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(St
4000
ring[] 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();
}
}
}


【演示效果】







【说明】

代码未运行,因测试网址已经失效。

若编码出错,请见谅。

发帖部分留作思考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: