首页 技术 正文
技术 2022年11月18日
0 收藏 657 点赞 2,889 浏览 4580 个字

### Web核心+HTTP协议准备工作:XAMPP+PhpWindd+AglieoneHTTP协议简介HTTP请求最常用请求GET请求获取URL所标识的资源POST请求在URL所标识的资源后附加新的数据请求参数所代表的意义content-Length内容大小content-Type内容类型Server服务器类型等等不常用请求HEAD请求获取由Request-URL所标识的资源的响应消息报头OPTIONS请求查询服务器的性能,或查询与资源相关的选项和需求PUT请求服务器存储一个资源,并用URL作为其标识DELETE请求服务器删除由URL所标识的资源TRACE请求服务器回送收到的请求信息,主要用于测试或诊断HTTP响应HTTP网络协议版本Server服务器版本Data服务器处理页面的时间,格林威治时间+8小时=北京时间

content-Type告诉服务器传输数据类型transfer-encoding数据分块传输,响应后需要拼接X-UA-compatible浏览器的兼容性HTTP字段含义较多,不一一总结了学习方法善于结合工具进行分析字段的理解,归纳常用字段信息HTTP-Session无状态的缺失Session ID一个回话的ID号,用来唯一标识客户端比如进行登录时就需要对session进行保存键值对保存在服务器端清除catch和cooki信息cookie的作用域HTTP-Cookie键值对形式保存在客户端比如使用cookie保存用户登录时长实战:Fiddler协议监控工具使用暴力破解

重编译url实战:HTTPWatch协议分析实战:RestClient手动发送请求实战:论坛自动灌水-Java测试类型业务场景技术梳理思路GET,POST,Session,Cookie如何与论坛发帖关联起来1.GET,POST请求如何发送get请求创建一个get请求方法1.建立连接HttpURLConnection对象URL对象将URL对象转换为HttpURLConnection对象2. 设置请求参数urlConnection.setConnectTimeout(5000);3. 获取响应内容bf = new BuffereReader(new ImputStreamReader(urlConnection.getInputStream(),”UTF-8″))String line = bf.readLine();

4. 在main函数中调用该方法post请求多了一个给服务器发送的正文创建一个写文件的标准对象,获取getOutputStream输出流pw = new PrintWriter(urlConnection.getOutputStream());传送给服务器的参数,即post的正文pw.print(paramValue);pw.flush();2.JAVA如何维护Session想办法获取到变量和值在响应的内容进行查找cookie将用Java代码获取到的cookie信息发给服务器Java的字符串处理操作 

 代码编写请求流程总结get请求1、导入相关的包或库2、创建一个对象来存放信息3、建立url连接,发送请求4、获取服务器返回的数据5、对获取到的数据进行处理:比如验证是否符合预期值 post请求1、导入相关的包或库2、创建一个对象来存放信息3、建立url连接,发送请求,多了头信息和一些必要的参数值比如cookie,用户名或id之类4、获取服务器返回的数据5、对获取到的数据进行处理:比如验证是否符合预期值 

import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.*; // 跟网络相关的包都在Java.net下import java.util.List;import java.util.Map; public class JavaHTTPHandle { private String globalCookie = “”; public static void main(String[] args) {// TODO Auto-generated method stubJavaHTTPHandle jhh = new JavaHTTPHandle(); // 实例化类JavaHTTPHandle// jhh.sendGet(“http://www.baidu.com”,””); // 调用自定义的sendGet方法jhh.sendPost(“https://cloud.ravvar.cn/account/login/username”, “username=darseek1&password=123456″,””);jhh.sendPost(“https://cloud.ravvar.cn/account/login/username”, “username=darseek1&password=123456”,jhh.globalCookie);}

public void sendGet(String urlAddress,String cookieValue) {// 第一步创建一个get请求 try {// 建立连接并发送请求HttpURLConnection urlConnection = null; // 实例化对象URL url = new URL(urlAddress); // 实例化对象,打开URL地址;用字符串参数的形式进行传递// URL与HttpURLConnection的类型不一致,在转换的时候需要强制转换,将URL父对象转换为HttpURLConnection子对象。urlConnection = (HttpURLConnection)url.openConnection(); // 建立了链接并且访问了url地址// 设置请求里的发送参数urlConnection.setConnectTimeout(5000);urlConnection.setReadTimeout(5000);urlConnection.setUseCaches(false);// urlConnection.setRequestProperty(“cookie”, “x=y”); //设置cookie请求值urlConnection.connect(); // 将get请求发送给服务器 // 获取响应内容,可选项;从输入流InputStreamReader里面读取响应内容urlConnection.getInputStream(),读取后放到缓冲区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) {// TODO Auto-generated catch blocke.printStackTrace();}  } public void sendPost(String urlAddress,String paramValue,String cookieValue) {try {// 建立连接并发送请求HttpURLConnection urlConnection = null; // 实例化对象URL url = new URL(urlAddress); // 实例化对象,打开URL地址;用字符串参数的形式进行传递// URL与HttpURLConnection的类型不一致,在转换的时候需要强制转换,将URL父对象转换为HttpURLConnection子对象。urlConnection = (HttpURLConnection)url.openConnection(); // 建立了链接并且访问了url地址// 设置请求里的发送参数urlConnection.setConnectTimeout(5000);urlConnection.setReadTimeout(5000);urlConnection.setDoOutput(true); // 接受输出urlConnection.setUseCaches(false);urlConnection.setRequestProperty(“Cookie”, cookieValue);urlConnection.connect(); // 将get请求发送给服务器 // 创建一个写文件的标准对象,获取getOutputStream输出流PrintWriter pw = new PrintWriter(urlConnection.getOutputStream());pw.print(paramValue); // 传送给服务器的参数,即post的正文,比如用户名和密码pw.flush(); 

// 获取响应内容,可选项;从输入流InputStreamReader里面读取响应内容urlConnection.getInputStream(),读取后放到缓冲区BufferedReader bf = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),”UTF-8″));// 将缓冲区内容一行行输出出来String line = bf.readLine(); // 读取第一行内容while (line !=null) { // 循环到一行中没有内容时停止System.out.println(line);line = bf.readLine(); // 循环一次读一行} // urlConnection.getHeaderField(“Set-Cookie”) // 获取响应头中Set-Cookie对应的值Map<String,List<String>> map = urlConnection.getHeaderFields(); // 获取所有响应头里的信息List list = (List)map.get(“Set-Cookie”); // 取出Set-Cookie相关的信息for (int i=0;i<list.size();i++) { // 取出list中的所有行// 从每一行中获取关键字String temp = list.get(i).toString(); // 定义一个变量String value[] = temp.split(“;”); // 定义一个数组,使用分号进行分割this.globalCookie += value[0] + “;”; // 定义一个全局变量来存放数组中获取到的第一个字段,并进行拼装System.out.println(globalCookie); } } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,905
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727