Java网络编程从入门到精通(21):HTTP消息的格式

当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并交过个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。

HTTP协议分为两部分:

1.HTTP请求消息。

2.HTTP响应消息。

一、HTTP请求消息

HTTP请求消息分为请求消息头以及请求实体内容两部分。请求消息头的第一行必须由以下三部分组成:

请求的方法(GET、POST和HEAD等)。

Web资源的路径(http://www.website.com/test/test.html中的/test/test.html

部分)。

HTTP协议的版本(HTTP/1.0或HTTP/1.1)。

在请求消息头的其他行是请求头字段。每一行的格式是:

"头字段" ":" "头字段的值"

请求头以一个空行结束。如下面上一个GET请求的例子:

GET / HTTP/1.1
Host: www.csdn.net
Connection: Keep-Alive
Accept: */*

如果是POST请求,将要提交的实体内容放到消息头的空行后面,如下面是一个POST请求的例子:

POST /servlets-examples/servlet/RequestParamExample HTTP/1.1
Host: localhost:8888
Content-Length: 29
Connection: Close

firstname=Bill&lastname=Gates

在上面的请求消息中Content-Length表示请求内容的以字节为单位的长度(" firstname=Bill&lastname=Gates"的长度)。在使用POST方法时,这个字段必须提供,而且长度必须等于实体内容的长度,否则服务器将返回一个错误状态码。

时间: 2024-11-30 08:46:07

Java网络编程从入门到精通(21):HTTP消息的格式的相关文章

Java网络编程从入门到精通

Hibernate从入门到精通(十一)多对多双向关联映射 Hibernate从入门到精通(十)多对多单向关联映射 Hibernate从入门到精通(九)一对多双向关联映射 Hibernate从入门到精通(八)一对多单向关联映射 Hibernate从入门到精通(七)多对一单向关联映射 Hibernate从入门到精通(六)一对一双向关联映射 Hibernate从入门到精通(五)一对一单向关联映射 Hibernate从入门到精通(四)基本映射 Hibernate从入门到精通(三)Hibernate配置文

Java网络编程从入门到精通(34)

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据 对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这些读写缓冲区的方法. 虽然使用all

Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(8):用getAddress方法获得IP地址     IP地址分为普通地址和特殊地址.在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址. 一.isAnyLocalAddress方法     当IP地址是通配符地址时返回true,否则返回false.这个通配符地址对于拥有多个网络接口(如两块网卡)的计算机非常拥有

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)     对于缓冲区来说,最重要的操作就是读写操作.缓冲区提供了两种方法来读写缓冲区中的数据:get.put方法和array方法.而get.put方法可以有三种读写数据的方式:按顺序读写单个数据.在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法.在本文及后面的文章中将分别介绍这

Java网络编程从入门到精通(32):一个非阻塞I/O的例子

为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中.读者可以先不必管这个例子的具体细节.因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识.在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团.这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出. package test; import java.net.*; import java.nio.*; import

Java网络编程从入门到精通(31):非阻塞I/O简介

在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯.这两种方式并非互相排斥和互相取代.我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式.在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯. 一.什么是非阻塞I/O 我们可以将同步I/O称为阻塞I/O,非阻塞I/O称为异步I/O.在本书中采用了比较常用的叫法:同步I/O和非阻塞I/O.虽然它

Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理

与ServerSocket对象相关的信息有两个:绑定端口和绑定IP地址.绑定端口可以通过getLocalPort方法获得.绑定IP地址可以通过getInetAddress方法获得. 一.getLocalPort方法 getLocalPort方法的返回值可分为以下三种情况: 1.ServerSocket对象未绑定端口,getLocalPort方法的返回值为-1. 2.ServerSocket对象绑定了一个固定的端口,getLocalPort方法返回这个固定端口. 3.ServerSocket对象的

Java网络编程从入门到精通(27):关闭服务端连接

在客户端和服务端的数据交互完成后,一般需要关闭网络连接.对于服务端来说,需要关闭Socket和ServerSocket. 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true.但对已关闭的Socket的输入输出流进行操作会抛出一个SocketException异常. 在关闭服务端的ServerSocket后,ServerSocket对象所绑

Java网络编程从入门到精通(25):创建ServerSocket对象

ServerSocket类的构造方法有四种重载形式,它们的定义如下: public ServerSocket() throws IOException public ServerSocket(int port) throws IOException public ServerSocket(int port, int backlog) throws IOException public ServerSocket(int port, int backlog, InetAddress bindAddr