模拟浏览器向服务器发送和接收数据
来源:互联网 发布:企业信息化涉及软件 编辑:程序博客网 时间:2024/05/16 19:04
创建一个服务器程序,用来接收和返回数据:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getMethod()); //获取请求方式
System.out.println(request.getHeader("referer")); //获取请求页面
System.out.println(request.getParameter("name")); //获取参数
response.getOutputStream().write("Hello".getBytes()); //向浏览器回送数据
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
接下来,再创建一个Java程序向这个服务器程序发送请求,类 HttpURLConnection提供方法获取和发送请求数据.但是构造方法
protected
HttpURLConnection(URL u)
表明我们不能直接创建这个对象,也没有任何静态方法能够返回这个对象.于是我们需要绕一把..先获得 URL对象,再利用openConnection()返回
HttpURLConnection对象:
public void sendHttp() throws IOException{
URL url = new URL("http://localhost:8080/ImitateRequest/servlet/servlet"); //设置要访问的链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //获取HttpURLConnection的对象
conn.setDoOutput(true); //默认值为false,不能传递参数
conn.setRequestMethod("POST"); //设置请求方式
conn.setRequestProperty("referer", "http://www.sina.com/index.html");
OutputStream out = conn.getOutputStream();
out.write("name=aaaa".getBytes()); //向服务器发送一个值为"aaaa"的name参数,如果conn的DoOutput属性值为false,此处将抛出异常
conn.getResponseCode(); //获取响应状态码
}
以上是发送一次请求需要掌握的方法,接下来是读取一次请求:
public void readHttp() throws IOException{
URL url = new URL("http://localhost:8080/ImitateRequest/servlet/servlet"); //设置请求的链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
System.out.println(conn.getResponseCode()); //查看响应状态码
System.out.println(conn.getHeaderField("Content-Length")); //响应文本内容的长度
InputStream in = conn.getInputStream(); //获取一个和服务器返回的内容相关联的流
try{
int len = 0;
byte[] buffer = new byte[1024];
while((len = in.read(buffer))>0){
System.out.println(new String(buffer,0,len)); //输出到控制台
}
}finally{
if(in!=null)
try{
in.close();
}catch(Exception e){
}
}
}
常用的一些HTTP协议请求头:
Request
GET /h.gif?pid=113&monkey=cool HTTP/1.1
请求方式 请求路径 请求版本
Accept
image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
浏览器可接收的类型
Referer
http://hao123.com/
来源路径
Accept-Language
zh-CN
浏览器可以接收的语言
User-Agent
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
浏览器的厂商信息
Content-Type
text/html; charset=UTF-8
数据的内容类型
Accept-Encoding
gzip, deflate
浏览器可以接收压缩后的数据
Host
nsclick.baidu.com
请求的主机IP和端口号
Content-Length
289
用于指定数据的总长度
Connection
Keep-Alive
维持一个活动连接
Cache-Control
no-cache
缓存情况
Cookie
BAIDUID=304614CF0781D6FABA00280E60983AF5:FG=1
COOKIE
- 模拟浏览器向服务器发送和接收数据
- 安卓向服务器发送数据和服务器接收数据全过程
- 向ESB发送和接收数据
- 使用 Socket 类向 HTTP 服务器发送数据和接收响应。
- URLConnection 模拟浏览器向服务器提交数据,服务器返回数据
- tcp模拟浏览器向 Tomcat服务器发送请求
- 用httpwebrequest/httpwebresponse向服务器POST发送及接收数据
- 用httpwebrequest/httpwebresponse向服务器POST发送及接收数据
- MQTT连接服务器发送和接收数据
- MQTT连接服务器发送和接收数据
- 向服务器发送数据
- Java使用HttpPost模拟浏览器向服务器添加数据
- Go语言(服务器开发):客户端向服务器发送数据并接收返回数据
- java 网络 之 模拟浏览器给服务器发送数据
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- HDP的另外一种构架
- 如何在 .NET Framework 3.5 环境下开发 2.0
- resource is out of sync with the file system 解决方法
- WINCE5.0+S3C2440支持大容量SD卡(SDHC卡)
- symbian 问题汇总
- 模拟浏览器向服务器发送和接收数据
- OSGI
- 自定义增长列
- 面试杂感
- sqlserver 2000 中 按位与 的应用
- 字符编码的奥秘
- netstat命令
- 名企实习一年我学会15件事
- 3 怎样在C和C++中实现回调函数