cake从PHP中的http_post_data中提取响应主体


cakeExtracting the response body from http_post_data in PHP

我正在使用PHP http_post_data((调用将数据发送到cakepp控制器。我是这样做的:

$response=http_post_data($url, $xml_data_encoded);

数据到达目的地,我得到一个包含响应状态的响应。在我的情况下,状态是数字1,这意味着数据传递正常。正如你从下面的代码中看到的,我不仅得到了状态号(位于消息的底部(,还得到了整个http post标题。如何将此消息从标题代码中剥离,以便最终响应消息只包含状态号?

HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Thu, 10 Nov 2011 08:34:15 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.3
Set-Cookie: CAKEPHP=xxxxxxxxxxxxxxxx; expires=Fri, 18-Nov-2011 16:34:15 GMT;       path=/XXXXXXXXXX/xxxxxxxx
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Vary: Accept-Encoding
Content-Length: 19
Content-Type: text/html
1

顺便说一句,我也试过这个:

 HttpMessage::getBody(http_post_data($url, $xml_data_encoded));

没有得到任何回应。如有任何帮助,我们将不胜感激。

$response = http_post_data($url, $data);
preg_match_all('~HTTP/1'.[01]'s('d{3})~', $response, $codes);

CCD_ 1将存储所有匹配。只需print_r数组并查找所需的密钥。

您可以使用http_parse_message 而不是正则表达式

$response = http_parse_message(http_post_data($url, $data));
print $response->body;