HTTP报文实例

在罗列具体的实例之前,先啰嗦几句概念性的东西.

GET,POST,SOAP都是基于HTTP协议的,但是,

POST 是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,

GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,

只是用来设计告诉 服务器,你到底需要什么样的数据.

POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的.

当然数据传送量上,POST自然要多些...

而SOAP是依赖于HTTP POST模式实现的,它遵循一种特殊的xml消息格式
在SOAP中,Content-type设置为: text/xml,任何数据都可以xml化

具体看以下HTTP的格式

发送

?
1
2
3
4
5
6
7
< request line>
 
< headers >
 
< blank line>
 
[< request-body >]

接收

?
1
2
3
4
5
6
7
< status line>
 
< headers >
 
< blank line>
 
[< response-body >]

在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。

而常用的状态码如下

?
1
2
3
4
5
◆200 (OK): 找到了该资源,并且一切正常。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。

 

 

下面仅是HTTP中最常用的GET和POST方法几个实例,以及基于POST的SOAP方法

GET 方法

发送:

?
1
2
GET /DEMOWebServices2.8/Service.asmx/CancelOrder?UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1
Host: api.efxnow.com

接收:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
 
<? xml version = "1.0" encoding = "utf-8" ?>
< objPlaceOrderResponse xmlns = "https://api.efxnow.com/webservices2.3" >
< Success >boolean</ Success >
< ErrorDescription >string</ ErrorDescription >
< ErrorNumber >int</ ErrorNumber >
< CustomerOrderReference >long</ CustomerOrderReference >
< OrderConfirmation >string</ OrderConfirmation >
< CustomerDealRef >string</ CustomerDealRef >
</ objPlaceOrderResponse >

注意其中没有实质的内容,自然也没有CONTENT-LENGTH,所以在CGI中若是GET方法发送的报文,通过环境变量获得的值为NULL

特别要注意其中的空行,之前是报文头,之后是报文的实际内容,下面的POST方法,发送时也有类似的规则

POST方法

发送

?
1
2
3
4
5
6
POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1
Host: api.efxnow.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
 
UserID=string&PWD=string&OrderConfirmation=string

接收

?
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
 
<? xml version = "1.0" encoding = "utf-8" ?>
< objPlaceOrderResponse xmlns = "https://api.efxnow.com/webservices2.3" >
< Success >boolean</ Success >
< ErrorDescription >string</ ErrorDescription >
< ErrorNumber >int</ ErrorNumber >
< CustomerOrderReference >long</ CustomerOrderReference >
< OrderConfirmation >string</ OrderConfirmation >
< CustomerDealRef >string</ CustomerDealRef >
</ objPlaceOrderResponse >

最后再介绍一种基于POST的方法

SOAP方法(soap 1.2)

发送

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST /DEMOWebServices2.8/Service.asmx HTTP/1.1
Host: api.efxnow.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
 
<? xml version = "1.0" encoding = "utf-8" ?>
< soap12:Body >
     < CancelOrder xmlns = "https://api.efxnow.com/webservices2.3" >
       < UserID >string</ UserID >
       < PWD >string</ PWD >
       < OrderConfirmation >string</ OrderConfirmation >
     </ CancelOrder >
</ soap12:Body >
</ soap12:Envelope >

回复

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
 
<? xml version = "1.0" encoding = "utf-8" ?>
< soap12:Body >
     < CancelOrderResponse xmlns = "https://api.efxnow.com/webservices2.3" >
       < CancelOrderResult >
         < Success >boolean</ Success >
         < ErrorDescription >string</ ErrorDescription >
         < ErrorNumber >int</ ErrorNumber >
         < CustomerOrderReference >long</ CustomerOrderReference >
         < OrderConfirmation >string</ OrderConfirmation >
         < CustomerDealRef >string</ CustomerDealRef >
       </ CancelOrderResult >
     </ CancelOrderResponse >
</ soap12:Body >
</ soap12:Envelope >         

 

另外要补充说明的是,上面例子中报文头部分都比较简单,还有一些特别的属性可以根据需要添加,

比如要求服务器自动断开链接等功能就可以通过一些属性来设置

再举两个例子

GET发送

?
1
2
3
4
5
GET /books/?name=Professional%20Ajax HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

POST发送

?
1
2
3
4
5
6
7
8
9
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
      (----此处空一行----)
name=Professional%20Ajax&pu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值