PHP сообщение для веб-службы REST - PullRequest
4 голосов
/ 14 июня 2011

Я совершенно новичок в веб-сервисах REST.Мне нужно опубликовать некоторую информацию в веб-сервисе REST с помощью php и использовать ответ, чтобы дать пользователям продукт (ответ - это код продукта).Моя задача: 1) HTTP-метод - post 2) Тело запроса - XML ​​3) Заголовки должны иметь ключ API, например: some-co-APIkey: 4325hlkjh 4) Ответ - xml, и его необходимо проанализировать.Мой главный вопрос - как установить заголовки так, чтобы они содержали ключ, как задать тело и как получить ответ.Я не уверен точно, с чего начать.Я уверен, что это довольно просто, но так как я никогда не видел это, я не уверен, как подойти к этому.Если бы кто-то мог показать мне пример, это было бы здорово.Заранее спасибо за любую помощь.

Я думаю, что-то вроде этого;

  $url = 'webservice.somesite.com';

  $xml = '<?xml version="1.0" encoding="UTF-8"?>
      <codes sku="5555-55" />';
  $apiKey = '12345';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);

  ## For xml, change the content-type.
  curl_setopt ($ch, CURLOPT_HTTPHEADER, $apiKey);

  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ask for results to be returned
  if(CurlHelper::checkHttpsURL($url)) { 
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    }

  // Send to remote and return data to caller.
  $result = curl_exec($ch);
  curl_close($ch);

Это кажется правильным?

Ответы [ 3 ]

8 голосов
/ 14 июня 2011

Вы должны использовать cURL для этого.Вы должны прочитать документацию, но вот функция, которую я написал, которая поможет вам.Измените его для своих целей

function curl_request($url,  $postdata = false) //single custom cURL request.
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     

    curl_setopt($ch, CURLOPT_URL, $url);

    if ($postdata)
    {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);   
    }

    $response = curl_exec($ch);

    curl_close($ch);

    return $response;
}

Что касается XML, php имеет несколько отличных функций для его анализа.Проверьте simplexml .

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

Если вы можете установить / иметь доступ к cURL, он будет делать то, что вы хотите:

CURL Руководство: http://php.net/manual/en/book.curl.php

Примеры: http://php.net/manual/en/curl.examples.php

И анализатор XML: http://php.net/manual/en/book.xml.php

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

Просто посмотрите в руководстве по PHP, как выполнить HTTP-запрос , и прочитайте ответ. Параметры и параметры HTTP-контекста полезны для того, чего вы хотите достичь.

Если вам нужен общий учебник о том, как сделать запрос HTTP POST, вы найдете здесь более длинный: HTTP POST из PHP, без cURL .Он также имеет универсальный помощник REST , так что это может быть именно то, что вы ищете.

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