我在RHEL5,6和7盒子上试过这个 - 在所有情况下,返回的数据都已损坏。
跑步时:
curl https://my-server/my/web/service/service_name?xsd=../common/common_simple.xsd
返回的数据与我在Windows上通过网络浏览器获得的数据不同。
此外,wget在cmd行中工作得很好。
预期结果与curl得到的差异如下:
431,432c431,432
< <!-- [\-\s0-9a-zA-Z]{1,30} -->
< <xs:simpleType name="Test123ModelType">
---
> <!-- [\-\s0-9a-boolean">
> </xs:r <xs:simpleType name="Test123ModelType">
以上两行是文件之间的唯一区别。其余内容完全相同。
在所有情况下(在所有服务器上,包括预期和损坏的内容),重新检索的文件大小都相同。
另一个有趣的转折是它发生在MOST时代,但不是每次都发生。每10次执行一次,它就会返回正确的内容。
文件大小为26566字节。
更新: 我用--trace选项运行curl,我在跟踪输出中看到以下内容:
<= Recv data, 8208 bytes (0x2010)
1000: 2d 5c 73 30 2d 39 61 2d 62 6f 6f 6c 65 61 6e 22 -\s0-9a-boolean"
1010: 3e 0a 09 09 3c 2f 78 73 3a 72 09 3c 78 73 3a 73 >...</xs:r.<xs:s
1020: 69 6d 70 6c 65 54 79 70 65 20 6e 61 6d 65 3d 22 impleType name="
这看起来像是来自服务器的损坏数据。但是,我不明白的是,为什么它通过浏览器和wget工作正常。
更新:尝试在Linux上运行时指定多个不同的代理字符串 - 未发现行为更改。
更新:尝试使用winl和openssl版本的curl在Windows 7上运行相同的操作,并且无法重现该问题。还尝试通过Linux上的lynx文本浏览器运行 - 也没有以这种方式重现问题。
非常感谢任何解决/疑难解答的想法。