我有一个PHP脚本,它接收一个文件并返回一个响应。
PHP脚本返回如下响应:
echo "<response><status>success</status><message>file received: test.txt</message></response>";
当我从PuTTY发出POST请求时,我收到的响应是:
6b
<response><status>success</status><message>file received: test.txt</message></response>
根据回复,6b
也可能是其他内容?这是十六进制响应的长度,还是其他什么?
PHP脚本。目前,我正在努力简单地发布文件并接收和解析响应,因此PHP文件是准系统。
<?php
if (array_key_exists('file',$_FILES) && $_FILES['file']['size'] != 0)
{
$status = 'success';
$message = "File received: " . $_FILES['file']['name'];
}
else
{
$status = 'failed';
$message = "No file received.";
}
$reply = "<response>"
."<status>" . $status . "</status>"
."<message>" . $message . "</message>"
."</response>";
echo $reply;
?>
我正在putty上的端口80上建立一个RAW连接,并发出如下的POST请求:
POST /file_post.php HTTP/1.1
Host: example.com
Connection: Keep-Alive
Content-Length: 212
UserAgent: Mozilla/5.0
Content-Type: multipart/form-data; boundary=---------------------8ce9826eb81af6a
-----------------------8ce9826eb81af6a
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: application/octet-stream
TestData
-----------------------8ce9826eb81af6a--
收到回复
答案 0 :(得分:1)
这是Chunked Transfer Encoding http://en.wikipedia.org/wiki/Chunked_transfer_encoding
您可以在http 1.0而不是1.1中发送请求以避免这种情况,或者您可以轻松解码(请查看http://en.wikipedia.org/wiki/Chunked_transfer_encoding#Example)非常容易解码,
或者使用php-curl,它会自动为你解码响应。