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

时间:2011-11-10 08:47:05

标签: php cakephp

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

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

数据到达目的地正常,我得到一个响应,保持响应状态。在我的情况下,状态是数字1,这意味着-data交付正常。你可以从下面的代码中看到我不仅得到状态number(在消息的底部)以及整个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));

并没有得到任何回应。 任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

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

$codes将存储所有匹配项。只需print_r数组并查找所需的键。

答案 1 :(得分:2)

您可以使用http_parse_message

代替正则表达式
$response = http_parse_message(http_post_data($url, $data));
print $response->body;