Извлечение тела ответа из http_post_data в PHP - PullRequest
1 голос
/ 10 ноября 2011

Я использую PHP http_post_data () для отправки данных на контроллер CakePHP. Я делаю это так:

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

Данные прибывают нормально к месту назначения, и я получаю ответ, который содержит ответstatus. В моем случае это номер 1, что означает, что -data доставлены нормально. Как вы можете видеть из приведенного ниже кода, я получаю не только номер статуса (который находится внизу сообщения), но и весь заголовок сообщения http.Как я могу удалить это сообщение из кода заголовка, чтобы в итоге ответное сообщение содержало только номер статуса?

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 ]

2 голосов
/ 20 ноября 2012

Вместо регулярного выражения вы можете использовать http_parse_message

$response = http_parse_message(http_post_data($url, $data));
print $response->body;
2 голосов
/ 10 ноября 2011
$response = http_post_data($url, $data);
preg_match_all('~HTTP/1\.[01]\s(\d{3})~', $response, $codes);

$codes будет хранить все совпадения.Просто print_r массив и ищите нужные ключи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...