HTTP响应包含我不理解的文字

时间:2012-01-03 17:27:26

标签: php http post httpresponse putty

我有一个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--

收到回复

enter image description here

1 个答案:

答案 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,它会自动为你解码响应。