Java学习之网络编程--模拟HTTP
2015-03-11 22:57
471 查看
协议:
1.应用层 HTTP FTP TELENET SNMP DNS
2.传输层 TCP UDP
3.网络层 IP
4.主机-网络层 以太网 IEEE802.3 令牌环网:IEEE802.4
HTTP(Hypertext Transfer Protocol 超文本传输协议) 是网络应用层的协议,建议在TCP/IP协议基础上。HTTP协议使用可靠的TCP连接,默认端口为80.目前最新的版本为HTTP 1.1,对应的RFC文档为RFC2068.
HTTP:协议简介
用户打开WEB浏览器,输入URL地址,就能接收到远程HTTP服务器端发送过来的网页,即HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。
HTTP请求响应的字符串:
请求的第一行是“方法 URL 协议/版本”:POST /index.html HTTP/1.1
以上代码中“POST”代表请求方法,“/index.html”标示URI, HTTP/1.1 代表协议及版本。
根据HTTP标准,HTTP请求可以使用多种请求方法,例如:HTTP/1.1支持7种请求方法:GET,POST,HEAD,OPTIONS,PUT,DELETE和TARCE。在Internet应用中,最常用的方法是Get和post。
URL完整的指定了要访问的网络资源,相对服务器的根目录的相对目录即可,因此总是以 / 开头。
2.请求头(Request Header)
请求头包含许多有关客户端环境和请求正文的有用信息。例如请求头可以声明浏览器所用的语言,请求正文的长度等。
3.请求正文(Request Content)
请求头和请求正文之间必须存在(\r\n)符号行(回车符和行结束符),与请求头分开。这个行非常重要,它标示请求头已经结束,接下来是请求正文,通常post方法的数据存放于此。
POST与Get提交的方式,参数写的位置不同。
例:模拟请求
服务器端:
客户端:
浏览器中输入:http://localhost:9999/index.html?username=aaa
HTTP响应分析:
1.响应格式
HTTP协议规定,响应与请求一样,由3部分构成,分别是:
1.HTTP协议版本、状态代码、描述
2.响应头(Resonse Head)
3.响应正文(Response Content)
HTTP/1.1 200 OK
ServerApache Tomcat/6.0
Date:Mon 6 16:35:42 GMT
Content-type:text/html:charset=GBK
Content-Length:112
<html>
<title></title>
<body></body>
</html>
1).HTTP协议版本,状态代码、描述
HTTP/1.1 200 OK
HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
1XX - 信息类(Information),表示收到Web浏览器请求,正在进一步的处理中。
2XX - 成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX - 重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX - 客户端错误(clientError),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX - 服务器错误(Server error),表示服务器不能完成对请求的处理:如 500
常见响应的HTTP应答码:
200 OK
400 Bad Request
404 Not Found
405 Method Not Allowed
2):响应头(Resonse Header) 响应头也和请求头一样包含许多有用的信息,例如服务器类型,日期时间,正文类型和正文长度等
常见类型:
Content-type:text/html:charset=GBK
Content-type:text/plain:charset=GBK 普通文本
Content-type::application/octed-stream 流
3):响应正文(Response Content)就是服务器返回的HTML页面。
响应头和响应正文之间也必须存在(/r/n),与响应头分开。
1.应用层 HTTP FTP TELENET SNMP DNS
2.传输层 TCP UDP
3.网络层 IP
4.主机-网络层 以太网 IEEE802.3 令牌环网:IEEE802.4
HTTP(Hypertext Transfer Protocol 超文本传输协议) 是网络应用层的协议,建议在TCP/IP协议基础上。HTTP协议使用可靠的TCP连接,默认端口为80.目前最新的版本为HTTP 1.1,对应的RFC文档为RFC2068.
HTTP:协议简介
用户打开WEB浏览器,输入URL地址,就能接收到远程HTTP服务器端发送过来的网页,即HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。
HTTP请求响应的字符串:
GET /index.html?username=shen&pwd=aaa HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Accept-Encoding: gzip, deflate Host: localhost:9999 Connection: Keep-Alive1.请求方法URI协议/版本
请求的第一行是“方法 URL 协议/版本”:POST /index.html HTTP/1.1
以上代码中“POST”代表请求方法,“/index.html”标示URI, HTTP/1.1 代表协议及版本。
根据HTTP标准,HTTP请求可以使用多种请求方法,例如:HTTP/1.1支持7种请求方法:GET,POST,HEAD,OPTIONS,PUT,DELETE和TARCE。在Internet应用中,最常用的方法是Get和post。
URL完整的指定了要访问的网络资源,相对服务器的根目录的相对目录即可,因此总是以 / 开头。
2.请求头(Request Header)
请求头包含许多有关客户端环境和请求正文的有用信息。例如请求头可以声明浏览器所用的语言,请求正文的长度等。
3.请求正文(Request Content)
请求头和请求正文之间必须存在(\r\n)符号行(回车符和行结束符),与请求头分开。这个行非常重要,它标示请求头已经结束,接下来是请求正文,通常post方法的数据存放于此。
POST与Get提交的方式,参数写的位置不同。
例:模拟请求
服务器端:
public class Server { private ServerSocket server = null; public static void main(String[] args) { Server server = new Server(); server.start(); } public void start() { try { server = new ServerSocket(9999); this.recive(); } catch (IOException e) { e.printStackTrace(); } } public void recive() { Socket client; try { client = server.accept(); byte[] flush = new byte[1024000]; int len = client.getInputStream().read(flush); // 接受请求的信息 String request = new String(flush, 0, len).trim(); System.out.println(request); } catch (IOException e) { e.printStackTrace(); } } }
客户端:
浏览器中输入:http://localhost:9999/index.html?username=aaa
HTTP响应分析:
1.响应格式
HTTP协议规定,响应与请求一样,由3部分构成,分别是:
1.HTTP协议版本、状态代码、描述
2.响应头(Resonse Head)
3.响应正文(Response Content)
HTTP/1.1 200 OK
ServerApache Tomcat/6.0
Date:Mon 6 16:35:42 GMT
Content-type:text/html:charset=GBK
Content-Length:112
<html>
<title></title>
<body></body>
</html>
1).HTTP协议版本,状态代码、描述
HTTP/1.1 200 OK
HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
1XX - 信息类(Information),表示收到Web浏览器请求,正在进一步的处理中。
2XX - 成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX - 重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX - 客户端错误(clientError),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX - 服务器错误(Server error),表示服务器不能完成对请求的处理:如 500
常见响应的HTTP应答码:
200 OK
400 Bad Request
404 Not Found
405 Method Not Allowed
2):响应头(Resonse Header) 响应头也和请求头一样包含许多有用的信息,例如服务器类型,日期时间,正文类型和正文长度等
常见类型:
Content-type:text/html:charset=GBK
Content-type:text/plain:charset=GBK 普通文本
Content-type::application/octed-stream 流
3):响应正文(Response Content)就是服务器返回的HTML页面。
响应头和响应正文之间也必须存在(/r/n),与响应头分开。
相关文章推荐
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- java 从零开始,学习笔记之基础入门<网络编程_带QQ模拟功能>(二十)
- JAVA基础学习之Http(含JSON)网络编程
- 黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】
- 黑马程序员学习(十四) java网络编程
- Java------网络通信编程 之 菜鸟新手的学习总结
- Java学习之网络编程
- 找呀志_java网络编程(4)TCP/IP、Http和Socket差额
- JAVA基础学习之UDP网络编程
- JAVA基础学习之TCP网络编程
- Android基础学习之Socket、Http、Json网络编程
- Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
- Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)
- 黑马程序员--Java学习日记之GUI&网络编程
- java系统学习(十九) --------网络编程基础
- java系统学习(十九) --------网络编程基础
- Java学习图形界面+网络编程案例---------网络简易通讯
- 初步学习JAVA网络编程
- java网络编程学习笔记(三):ServerSocket详解