【题目】
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();
}
}
}
【演示效果】
【说明】
代码未运行,因测试网址已经失效。
若编码出错,请见谅。
发帖部分留作思考。

3570

被折叠的 条评论
为什么被折叠?



