cUrl, PHP и доступ к определенному типу заголовка - PullRequest
1 голос
/ 29 июня 2011

Я пишу тестовый комплект, чтобы помочь в тестировании метода в классе PHP, который у меня есть. По сути, этот метод отправляет данные XML в виде запроса POST к LinkedIn API , поэтому в целях тестирования мой тестовый инструмент будет выступать в качестве фиктивной конечной точки API-интерфейса LinkedIn, получая опубликованные данные и возвращая различные ответы, чтобы увидеть, как метод обрабатывает их.

Итак, метод использует cUrl для отправки данных следующим образом:

$handle = curl_init()

curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($handle, CURLOPT_URL, 'http://localhost/target.php');
curl_setopt($handle, CURLOPT_VERBOSE, FALSE);

$header[] = 'Content-Type: text/xml; charset=UTF-8';
curl_setopt($handle, CURLOPT_HTTPHEADER, $header);

$data = '<?xml version="1.0" encoding="UTF-8"?>
         <activity locale="en_US">
           <content-type>linkedin-html</content-type>
           <body>Network update</body>
         </activity>';
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);

$response = curl_exec($handle);

Теперь в моем сценарии target.php я хотел бы получить доступ к данным POST ... но при отправке парных данных, отличных от key = value, $ _POST всегда пусто. Если я опускаю пользовательский заголовок и заменяю $data на $data = 'key=value', $_POST['key'] содержит value. Помните, что этот метод работает с точки зрения отправки данных XML, как указано выше, и ответа API LinkedIn.

Итак, есть ли какие-нибудь указатели о том, как получить доступ к данным POST, отправляемым в формате пары неключевых значений и, возможно, к пользовательскому типу заголовка?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Похоже, правильное решение - получить доступ к необработанным данным POST:

<?php $postdata = file_get_contents("php://input"); ?>

За http://php.net/manual/en/reserved.variables.httprawpostdata.php

0 голосов
/ 30 июня 2011

Это называется необработанными почтовыми данными:

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