Выполнение запроса REST API в PHP - PullRequest
3 голосов
/ 03 марта 2011

Извиняюсь за новизну этого вопроса.Я пытаюсь интегрировать API одного сайта в свой собственный сайт.Вот некоторые цитаты из их документации:

В настоящее время мы поддерживаем только XML, при вызове нашего API тип содержимого заголовка HTTP Accept должен быть установлен на «application / xml».

API использует метод запроса PUT .

У меня есть XML-файл, который я хочу отправить, и URL-адрес, на который я хочу его отправить, но как мне поступить?создание подходящего HTTP-запроса в PHP, который также будет захватывать возвращаемый XML-код?

Заранее спасибо.

Ответы [ 2 ]

12 голосов
/ 03 марта 2011

Вы можете использовать file_get_contents и stream_context_create , чтобы создать запрос и прочитать ответ. Что-то вроде этого сделает это:

$opts = array(
  "http" => array(
    "method" => "PUT",
    "header" => "Accept: application/xml\r\n",
    "content" => $xml
  )
);

$context = stream_context_create($opts);
$response = file_get_contents($url, false, $context);
6 голосов
/ 04 апреля 2011

Это на самом деле то, что у меня сработало:

$fp = fsockopen("ssl://api.staging.example.com", 443, $errno, $errstr, 30);


if (!$fp) 
{
    echo "<p>ERROR: $errstr ($errno)</p>";
    return false;
} 
else 
{
    $out = "PUT /path/account/ HTTP/1.1\r\n";
    $out .= "Host: api.staging.example.com\r\n";
    $out .= "Content-type: text/xml\r\n";
    $out .= "Accept: application/xml\r\n";
    $out .= "Content-length: ".strlen($xml)."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    $out .= $xml;

    fwrite($fp, $out);

    while (!feof($fp)) 
    {
        echo fgets($fp, 125);
    }

    fclose($fp);
}
...