Java 浏览器请求与web服务器应答
来源:互联网 发布:段子 知乎 编辑:程序博客网 时间:2024/06/03 02:32
HTML:
浏览器向web服务器请求网页,使用tcp协议,向其发送特定格式的数据字段,web服务器根据这些字段中携带的信息作出对应的应答。
浏览器请求字段:
GET /myweb/1.html HTTP/1.1 // 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。 /*请求消息头 . 属性名:属性值*/Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* // 其中*/*表示所有的文件类型Accept-Language: zh-cn,zu;q=0.5Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)Host: 192.168.1.100:9090//Host: www.huyouni.com:9090Connection: Keep-Alive//空行//请求体
WEB服务器应答:
HTTP/1.1 200 OK //应答行,http的协议版本 应答状态码 应答状态描述信息Server: Apache-Coyote/1.1ETag: W/"199-1323480176984"Last-Modified: Sat, 10 Dec 2011 01:22:56 GMTContent-Type: text/htmlContent-Length: 199Date: Fri, 11 May 2012 07:51:39 GMTConnection: close//空行//应答体,网页源码
实例:模拟浏览器与web服务器代码
浏览器端:
Socket s = new Socket("192.168.1.100",8080);PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("GET /myweb/1.html HTTP/1.1");out.println("Accept: */*");out.println("Host: 192.168.1.100:8080");out.println("Connection: close");out.println();//空行out.println();InputStream in = s.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);String str =new String(buf,0,len);System.out.println(str);s.close();
服务器端:
ServerSocket ss = new ServerSocket(9090); Socket s = ss.accept(); System.out.println(s.getInetAddress().getHostAddress()+".....connected"); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(text); PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("<font color='red' size='7'>欢迎光临</font>");//返回网页源码 s.close(); ss.close();
Java将URL封装,直接提供访问服务,不需要如上的人工发送请求字段
String str_url = "http://192.168.1.100:8080/myweb/1.html"; URL url = new URL(str_url);// 获取信息,更多信息见API文档 //System.out.println("getProtocol:"+url.getProtocol());// System.out.println("getHost:"+url.getHost());// System.out.println("getPort:"+url.getPort());// System.out.println("getFile:"+url.getFile());// System.out.println("getPath:"+url.getPath());// System.out.println("getQuery:"+url.getQuery()); InputStream in = url.openStream();//该句等于下面两句 URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream();// String value = conn.getHeaderField("Content-Type");//获取服务器端的信息(文件类型等等) byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(text); in.close();
0 0
- Java 浏览器请求与web服务器应答
- 关于服务器(自己写的tomcat小服务器程序)应答浏览器请求信息
- 回显请求与应答
- 消息请求应答与RPC
- Java Socket应答与HTTP服务器的瓜葛
- ICMP时间戳请求与应答
- SIP请求消息类型与应答码
- web浏览器 DNS服务器 web服务器与网站相关知识
- 浏览器与web服务器间的交互
- web服务器与浏览器交互表单
- http get请求获取服务器返回的应答数据
- 自己动手写web服务器三(web服务器是如何处理浏览器取消的请求的)
- Java网络编程 - 浅析web服务器与浏览器的实现原理
- Java网络编程 - 浅析web服务器与浏览器的实现原理
- 005 ZeroMQ REQ-<ROUTER-Dealer>-REP代理应答与请求
- 94-ICMP 协议(回显请求与应答)
- 96-ICMP 协议(时间戳请求与应答)
- 一个简单的HTTP请求与应答基于socket
- UICollectionViewCell 多选知识点总结
- 冒泡算法的实现
- 更改基于对话框程序左角上的图标以及.exe文件图标
- Codeforces Round #316 (Div. 2) E. Pig and Palindromes
- 使用EasyBCD完美实现Windows7与Linux双系统
- Java 浏览器请求与web服务器应答
- 读书笔记2-《万万没想到》
- bootstrap 学习笔记之span div差别
- 一道面试题:1和2的数字序列
- Regular Expression Matching
- Android自学笔记之ViewFlipper实现 图片轮转
- 黑马程序员[andriod]java基础学习日记四——面向对象的总结
- centos 下挂在硬盘流程以及开机自动挂载
- 以太网帧格式