IOTP Internet开放贸易协议HTTP 补充( 二 )


协议格式的注册模板,请参见下面第7部分的内容 。因为HTTP完全是二进制编码,所以不
需要对要传输的内容进行传输编码 。(参见[RFC2376]修订版,application/xml格式,它
也有一些类似的考虑 。)
HTML浏览器会将这个HTTP响应解释为开启与MIME协议类型“APPLICATION/IOTP”相
关的应用程序的一个响应,并把这个消息的内容发送给应用程序 。
就在这一时刻,IOTP客户端就会被启动,并获得第一个消息 。
IOTP消息的生存期是短暂的,因此,HTTP服务器应当避免将其响应放到缓存区中 。在
HTTPV1.0当中,我们可以使用“nocache”注记符来使响应不被放到缓存区中 。而当我们
使用的是SSL/TLS安全连接时,就可以不考虑这个问题,因为它不带有缓冲区;还有,在
HTTPv1.1中HTTP发送请求也一样不用考虑缓冲区问题,因为在HTTPv1.1中发送请求是
不会被放到缓冲区中的 。
4.2 传送中的IOTP消息
在一次交易中,先发送出去的IOTP消息中的数据必须要由IOTP客户端保留下来,这样
做的目的是:
(1)拷贝下来的数据作为后续IOTP消息的组成部分;
(2)用于在后续IOTP消息中验证签名的计算;
(3)在某些情况下,当请求没有得到响应而超时时需要重新发送;
(4)在最新的IOTP版本中用作客户相关交易方的输入,等等……
拷贝的具体方式由特定的IOTP交易决定 。不管交易最终是失败、成功还是被取消,这
些数据都必须保留到IOTP交易的最后,并且在交易之后,还要保留,直到交易的任何一方
都不想再去查询它为止 。
IOTP消息包含了网络位置信息(比如说PayReqNetLocn),HTTP的网络位置包含有IOTP
客户端要发送IOTP消息的目的地址的URIs 。
后面的IOTP消息(皆是XML文档)是通过使用HTTP的POST函数发送的 。HTTP客户端
必须要执行所有的HTTP的POST请求 。
XML文档必须通过一种与外部编码所兼容的方式来发送,当然,这种外部编码是符合XML
[XML]规格的 。
4.3 中止一个IOTP交易
下面所讲述的内容,读者可以结合[RFC2801]文档来阅读 。
当出现以下情形时,一笔IOTP交易就算完成了:
--当IOTP客户端由于某些原因决定放弃这笔IOTP交易,也可能是由于客户要撤销这笔
交易,或者是在接收IOTP消息过程中出现错误的结果 。或者当:
--出现“超时”错误或者是连接失败,比如说,在用户定义的响应时间范围内,接收方
没有收到对一个特定IOTP消息的响应(包括重发信息) 。
一个执行IOTP交易的IOTP客户端,此交易:
--若成功完成(也就是说,没有接收到有HardError的错误块或者是取消块),它必须
指示浏览器连向在协议选项组件中定义在SUCcessNetLocn里面的网络位置,也就是说,让
浏览器去对这个URL做一个HTTPGET请求 。
--若是因为收到一些错误交易块而使交易没有成功的话,它必须要将这些信息显示在错
误消息中,中止这笔交易,并将控制权交给浏览器,这样它就会对Error网络地址发送一个
GET请求,此地址具体指明了错误是由哪一方引起的 。
--若是因为收到了取消块而使交易被迫取消了,必须要中止此IOTP交易并将控制权交
给浏览器,以让浏览器对Cancel网络地址发送一个GET请求,此地址具体指明了取消块是
从哪一方发出来的 。
--若是由于一个IOTP消息不符合所要求的规格而发生错误,必须发送一个包含错误交
易块的IOTP消息到导致此错误消息的交易方(此交易方由ErrorLogNetLoc定义),并中止

推荐阅读