HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。
一、HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。
一个HEAD请求的响应可被缓存,也就是说,响应中的信息可能用来更新之前缓存的实体。如果当前实体跟缓存实体的阈值不同(可通过Content-Length、Content-MD5、ETag或Last-Modified的变化来表明),那么这个缓存就被视为过期了。
HEAD请求常常被忽 略,但是能提供很多有用的信息,特别是在有限的速度和带宽下。主要有以下特点:
1、只请求资源的首部;
2、检查超链接的有效性;
3、检查网页是否被修改;
4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等
二、GET方法用来获取Request-URI标识的任何(实体形式的)信息。如果Request-URI是关于一个数据处理过程,则应在响应中返回产生的数据,而不是过程中的源文本,除非该文本碰巧就是输出。
如果请求消息头包含If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match或If-Range,则GET方法的语义就变为“conditional GET”。只有在有条件的头域描述下,此conditional GET方法的请求才能传输。这种conditional GET方法试图通过刷新缓存实体来减少不必要的网络使用,避免多次请求或传输客户端已有的数据。
如果请求消息头包含Range,则GET方法的语义就变为“partial GET”。partial GET方法只请求传输实体的一部分。这种partial GET方法试图通过补全这些部分取回的实体来减少不必要的网络使用,避免传输客户端已有的数据。
GET请求方法是最常用的HTTP请求之一,有以下几个特点:
1、是默认的请求方法;
2、GET请求通常用于获取信息,而不是修改,所以应该是安全的、幂等的。
3、请求数据表现在URL上,以名称/值的形式发送。通常URL的长度限制为2KB,对于正常请求,基本不会超出该限制,除非是XML。
4、在IE和Opera等浏览器会产生URL缓存。如果不增加冗余的请求参数,响应会返回缓存中数据,导致结果不一致。
5、安全性低。不过POST请求也只比GET请求更安全一点点,获取开放的POST数据也是轻而易举的事,除非使用安全的网络连接,例如SSL。
三、POST方法用来请求原始服务器接受请求中包含的实体,附属于Request-Line中的Request-URI标识资源。POST用来完成以下功能:
POST方法实际完成的功能取决于服务器,并且通常依赖于Request-URI。发送的实体属于URI,就像一个文件属于一个目录、一篇新闻文章属于它所发表的新闻组、或者一条记录属于一个数据库 。
POST方法完成的行为可能不会产生一个URI标识的资源。在这种情况下,200(OK)或204(No Content)都是适合的响应状态,取决于响应是否包含描述结果的实体。
如果原始服务器上已经创建了资源,则响应应该是201(Created),并且包含一个描述请求状态的实体、一个新资源的引用,和一个Location头。
这种方法的响应不能缓存,除非该响应包含适合的Cache-Control或Expires头域。不过,303响应可以用来引导用户获取缓存的资源。
POST请求必须遵守信息传输要求
POST是最常用的请求方法之一,和GET方法的最大区别就是发送的数据和URL分离,因此没有长度限制。如果使用POST方法,还应将请求头中的Content-type设为application/x-www-form-urlencoded。POST方法有以下特点:
1、主要用于向服务器传送数据,例如发表博文,而GET主要用于获取;
2、数据封装在请求中,而不是URL中,因此没有长度限制;
3、不能缓存,而GET请求会缓存,在IE等浏览器中会直接返回缓存数据。
四、PUT方法请求那些封装在Request-URI的实体。如果Request-URI引用一个已存在的资源,则该封装实体应该作为原始服务器上的修改版本。如果Request-URI不是指向一个已存在的资源,并且该URI可被请求的用户代理定义为新资源,则原始服务器可用此URI创建新的资源。如果新资源被创建,这个原始服务器就必须通过201(Created)响应通知用户代理。如果已有资源被修改,则应发送200(OK)或204(No Content)响应,表示成功完成了该请求。如果Request-URI既没有创建也没用修改资源,则应给予适当的错误响应来反映问题本质。实体的接受者不能忽略任何不理解或没有实现的Content-*(例如 Content-Range)头部,并且必须返回501(Not Implemented)响应。
如果请求经过缓存,并且Rrequest-URI标识出一个或多个当前缓存的实体,则那些实体视为过期了。该方法的响应不会被缓存。
POST和PUT请求的根本区别在于Request-URI的不同意义。POST请求中的URI表示处理该封闭实体的资源,该资源可能是个数据接收过程、某种协议的网关、或者接收注解的独立实体。然而,PUT请求中的URI表示请求中封闭的实体--用户代理知道URI的目标,并且服务器无法将请求应用到其他资源。如果服务器希望该请求应用到另一个URI,就必须发送一个301(Moved Permanently)响应;用户代理可通过自己的判断来决定是否转发该请求。
不同的URI可以标识同一个资源。例如,一篇文章可以用“当前版本”URI来标识,区别于其他特殊版本的URI。这种情况下,一个通过URI的PUT请求可以获取原始服务器上定义的其他URI。
HTTP/1.1没有定义一个PUT请求如何影响原始服务器的状态。
PUT请求必须遵守信息传输要求。
除非另有说明,PUT请求中的实体头部应该用于PUT创建或修改的资源上。
PUT方法通常用于向服务器发送请求,如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接受请求内容,并修改URI资源的原始版本。就是通常俗称的上传资源。
分享到:
相关推荐
总结起来,C#提供了多种方式来实现HTTP请求,包括使用WebRequest/WebResponse的经典方法和更现代的HttpClient。无论选择哪种方法,发送HTTP请求都是一项基础且至关重要的技能,对于开发涉及网络通信的应用程序至关...
此处的`-X POST`指定了请求方法为POST,`-d`参数用于附加数据。 ##### 3.3 调试HTTP请求 在开发过程中,调试HTTP请求至关重要。CURL提供了丰富的选项用于调试: - `-v`或`--verbose`:显示详细的请求和响应信息,...
常见的HTTP请求方法有GET、POST、PUT、DELETE等,分别对应不同的操作。 RESTful是一种软件架构风格,用于设计网络应用程序,它强调通过HTTP方法来完成资源的操作。例如,GET用于获取资源,POST用于创建资源,PUT...
1. **客户端发起请求**:客户端通过HTTP请求向服务器发送数据。 2. **服务器处理请求**:服务器接收到请求后进行解析,根据请求内容执行相应的操作。 3. **服务器返回响应**:服务器处理完成后,向客户端发送响应,...
### HTTP请求方法的概述及应用 #### 一、HTTP请求方法的概述 HTTP请求方法是客户端(例如浏览器)与服务器之间交互的一种手段,用于获取特定资源或执行特定操作。这些方法在HTTP协议中定义,遵循典型的客户端-...
### HTTP请求方法详解 #### 一、概述 HTTP(HyperText Transfer Protocol)是互联网上最常用的网络协议之一,主要用于从Web服务器传输超文本至本地浏览器。客户端与服务器之间的交互是通过发送请求和接收响应实现...
1. 发送HTTP请求:工具允许用户自定义HTTP方法(GET、POST、PUT等),添加请求头,设置查询参数,以及上传文件,模拟真实的网络请求。 2. 查看响应:显示服务器返回的HTTP状态码、响应头和响应体,帮助理解服务器的...
### HTTP请求方法详解 HTTP(超文本传输协议)作为互联网应用中最常见的协议之一,定义了一系列标准的请求方法来实现客户端与服务器之间的数据交互。这些请求方法不仅规定了数据的传输方式,还指定了如何处理资源的...
主要分为以下几个部分:Http请求的基本概念、模拟Http请求的必要性、Apache HttpClient库的介绍及其在Java中的使用方法。 ### Http请求基本概念 Http(Hypertext Transfer Protocol)是用于从WWW服务器传输超文本...
### HTTP请求方法开发教程知识点详解 #### 一、HTTP简介 HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种应用层协议,主要用于从万维网服务器传输超文本到本地浏览器等应用程序。它是互联网上应用...
总结来说,QT通过其强大的网络模块提供了简单易用的接口来实现HTTP请求和响应。开发者可以利用这些功能创建各种网络应用,从简单的数据获取到复杂的文件上传下载。通过理解和实践QT的网络编程,你将能够更深入地掌握...
当我们需要在J2ME应用中与服务器进行交互时,HTTP通信是常见的手段,其中GET和POST是两种基本的HTTP请求方法。这篇博客文章“j2me Http Get和Post请求总结”主要探讨了如何在J2ME环境中实现这两种请求。 首先,GET...
在MTK(MediaTek)平台上,使用Socket实现HTTP请求是一项常见的任务,特别是在开发嵌入式设备或物联网应用时。本文将深入探讨如何在MTK平台上通过Socket编程来发送HTTP请求,涉及的知识点包括Socket基本原理、HTTP...
3. **设置请求方法**: `HttpURLConnection`允许设置不同的HTTP方法,比如GET、POST等。默认是GET,可以通过`setRequestMethod()`方法改变: ```java connection.setRequestMethod("GET"); ``` 4. **设置请求...
总结来说,Java发送HTTP请求涉及使用`java.net.HttpURLConnection`类,通过构造URL、设置请求属性、发送请求并解析响应内容来完成。封装这些操作到一个类中可以使代码更易于管理和复用。`HttpResponse`类则用于存储...
总结,这个"HTTP异步请求数据Demo(C#)"涵盖了异步HTTP请求的基础知识,包括GET、POST、PUT和DELETE操作,以及JSON数据的处理。通过学习和理解这些概念,开发者可以更高效地构建与服务器交互的C#应用程序。在实际...
4. 设置请求方法为GET。 5. 通过`GetResponse`方法发送请求并接收响应。 6. 使用`StreamReader`读取响应流中的内容。 ```csharp public string GetResponse(string url) { Uri t_Uri = new Uri(url); WebRequest ...
C#中使用Socket发送HTTP/HTTPS请求是一种高效的方法,特别是在需要自定义HTTP封包或对HTTP请求进行深入控制时。本文主要介绍了如何使用C#的Socket类来发送HTTP/HTTPS请求,并对相关的知识点进行了详细的解释。 ...
总结,这个HTTP请求工具源码是.NET开发者学习网络通信和接口调试的宝贵资料。通过研究和实践,我们可以更深入地理解HTTP协议,掌握C#中处理HTTP请求的方法,提高我们的开发技能。同时,源码中可能还包含了错误处理、...