2011-02-02 2 views
0

Я хочу использовать класс simeplexml в PHP5 для обработки небольшого XML-файла. Но чтобы получить этот файл, скрипт должен отправить конкретный запрос POST на удаленный сервер, который «даст» мне XML-файл взамен. Поэтому я считаю, что не могу использовать метод simplexml_load_file. Этот файл нужен только для обработки, тогда он может или даже должен быть удален/удален. У меня есть HTTP HEADER этого типаКак получить и обработать XML-файл, запрошенный через POST в PHP5?

$header = 'POST '.$gateway.' HTTP/1.0'."\r\n" . 
      'Host: '.$server."\r\n". 
      'Content-Type: application/x-www-form-urlencoded'."\r\n". 
      'Content-Length: '.strlen($param)."\r\n". 
      'Connection: close'."\r\n\r\n"; 

И не так много идей о том, что делать дальше с этим. Существует fsockopen, но я не уверен, что это будет уместно или как с ним идти.

ответ

1

Мой совет будет использовать что-то вроде Библиотека Zend_Http_Client или cURL. Все правильно с fsockopen будет больно отлаживать.

Zend_Http_Client имеет приятный интерфейс и будет работать сказочно.

CURL тоже не слишком больно и уже является частью большинства сборников PHP. Пример:

$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); // Replace with your URL 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch) // Return the XML string of data 

// Parse output to Simple XML 
// You'll probably want to do some validation here to validate that the returned output is XML 
$xml = simplexml_load_string($output); 
0

Я хотел бы использовать библиотеку HTTP клиента как Zend_Http_Client (или скручивание, если вы мазохист), чтобы создать запрос POST, а затем кормить тело ответа в simplexml_load_string или SimpleXMLElement::__construct()