题
通过插座做HTTP请求时,我会经历奇怪的行为,这里的请求:
POST https://example.com:443/service/XMLSelect HTTP/1.1
Content-Length: 10926
Host: example.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)
Authorization: Basic XXX
SOAPAction: http://example.com/SubmitXml
后来,我的请求带有给定的内容长度。之后,我收到类似的东西:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Tue, 30 Mar 2010 06:13:52 GMT
因此,这里的一切似乎都很好。我从网络流中阅读了所有内容,并成功地收到了响应。但是我正在对开关进行投票的插座,它的模式如下:
write ( i write headers and request here )
read ( after headers sent i begin to receive response )
write ( STRANGE BEHAVIOUR HERE. WHY? here i send nothing really )
read ( here it switches to read back again )
最后两个步骤可以重复几次。因此,我想问插座模式更改的线索是什么?在这种情况下,这不是一个大问题,但是当我在请求中使用GZIP压缩时(不知道它是如何相关的),并要求服务器像这样向我发送gzpipped响应:
POST https://example.com:443/service/XMLSelect HTTP/1.1
Content-Length: 1076
Accept-Encoding: gzip
Content-Encoding: gzip
Host: example.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)
Authorization: Basic XXX
SOAPAction: http://example.com/SubmitXml
我收到这样的答复:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Encoding: gzip
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Tue, 30 Mar 2010 07:26:33 GMT
2000
�
我收到了一个大小和GZIP标头,一切都很好。这就是我可怜的小插座正在发生的事情:同时
write ( i write headers and request here )
read ( after headers sent i begin to receive response )
write ( STRANGE BEHAVIOUR HERE. And it finally sits here forever waiting for me to send something! But if i refer to HTTP I don't have to send anything more! )
它可以与什么相关?它要我发送什么?是远程Web服务器的问题还是我错过了什么?
PS所有实际的服务参考和登录/密码替换为假:)
解决方案
在InfoPath中,公式是:
number(substring(YourField; 6; 4)) - (number(substring(YourField; 6; 4)) mod 10) + 10
. 不隶属于 StackOverflow