Hey Guys使用http_post_data时,我会收到一些额外的字符,如'5ae'和'45c'以及有效数据。我发送的数据是XML,响应也是如此。响应包含使XML无效的这些奇怪的字符。如果我使用fsockopen我没有这个问题。真的想要一些意见。
答案 0 :(得分:1)
你的问题并没有提供太多细节,但(非常猜测,但这让我想起了这个)这可能与 Chunked transfer encoding (引用):
如果Transfer-Encoding标头带有 chunked的值在一个中指定 HTTP消息,消息的正文 是由一个未指定数量的 以最后的零大小结尾的块 块。
每个非空的块都以 它嵌入的数据的八位字节数 (以十六进制编写的大小)后跟一个CRLF (回车 和换行),以及数据本身。
您在数据中获得的5ae
和45c
可能与每个数据块的大小相对应。
如果您尝试手动发送HTTP请求,那可能不是一个好主意:HTTP不是一个如此简单的协议,您应该使用已经存在的库来处理那种烦恼。
例如,您可以查看curl - 请参阅curl_setopt
以获取令人印象深刻的可能选项列表。
编辑:我意识到http_post_data
是由PECL http extension提供的功能。
在该库中,您可能感兴趣的功能是解码分块数据:http_chunked_decode
答案 1 :(得分:1)
是的,这是Chucked Transfer Encoding的结果。 我们可以通过取消选中响应窗格的Transformer选项卡中的'Chunked Transfer-Encoding'来在fiddler中观察到这种行为。