POST XML для URL с PHP и обработкой ответа - PullRequest
2 голосов
/ 23 января 2009

За последние годы я видел множество методов размещения данных с помощью PHP, но мне любопытно, что это за предлагаемый метод, если предположить, что он есть. Или, может быть, есть несколько невысказанный, но полу-общепринятый способ сделать это. Это также включает обработку ответа.

Ответы [ 5 ]

3 голосов
/ 01 февраля 2012

Хотя скрипт Snoopy может быть классным, если вы хотите просто опубликовать данные XML с PHP , почему бы не использовать cURL? Это просто, имеет обработку ошибок и является полезным инструментом в вашей сумке. Ниже приведен пример публикации XML на URL с помощью cURL в PHP.

// url you're posting to        
$url = "http://mycoolapi.com/service/";

// your data (post string)
$post_data = "first_var=1&second_var=2&third_var=3";

// create your curl handler     
$ch = curl_init($url);

// set your options     
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //ssl stuff
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:  application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// your return response
$output = curl_exec($ch); 

// close the curl handler
curl_close($ch);
1 голос
/ 23 января 2009

Мне нравится Zend_Http_Client из Zend Framework .

В основном это работает с использованием stream_context_create () и stream_socket_client () .

Небольшой пример:

$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setParameterPost('foo', 'bar')
$response = $client->request('POST');

$status = $response->getStatus();
$body = $response->getBody();
1 голос
/ 23 января 2009

Вы можете попробовать Snoopy скрипт
Это полезно для хостинг-провайдеров, которые не разрешают fopen wrappers
Я использовал его в течение нескольких лет, чтобы получить RSS-каналы.

1 голос
/ 23 января 2009

cURL - единственный известный мне надежный способ POST-данных, кроме использования сокета .

Теперь, если вы хотите отправить данные через GET, есть несколько способов:
cURL
розетки
file_get_contents
файл
и другие

0 голосов
/ 23 января 2009

Нет действительно стандартного способа. В коде, предназначенном для распространения, я обычно проверяю cURL , file_get_contents и сокеты , используя первый найденный. Каждый из них поддерживает GET и POST, и каждый из них может или не может быть доступен (или работать) в зависимости от версии и конфигурации PHP.

В основном что-то вроде:

function do_post($url, $data) {
  if (function_exists('curl_init') && ($curl = curl_init($url))) {
    return do_curl_post($curl, $data);
  } else if (function_exists('file_get_contents') && ini_get('allow_url_fopen') == "1") {
    return do_file_get_contents_post($url, $data);
  } else {
    return do_socket_post($url, $data);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...