Может ли кто-нибудь дать мне пример того, как я могу использовать следующий веб-сервис с php?
http://www.webservicex.net/uszip.asmx?op=GetInfoByZIP
Вот простой пример, который использует завиток и интерфейс GET.
$zip = 97219; $url = "http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip=$zip"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); $xmlobj = simplexml_load_string($result);
Переменная $result
содержит XML, который выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?> <NewDataSet> <Table> <CITY>Portland</CITY> <STATE>OR</STATE> <ZIP>97219</ZIP> <AREA_CODE>503</AREA_CODE> <TIME_ZONE>P</TIME_ZONE> </Table> </NewDataSet>
После того, как XML обрабатывается в объекте SimpleXML, вы можете получить следующие узлы:
print $xmlobj->Table->CITY;
Если вы хотите получить фантазию, вы можете бросить все это в класс:
class GetInfoByZIP { public $zip; public $xmlobj; public function __construct($zip='') { if($zip) { $this->zip = $zip; $this->load(); } } public function load() { if($this->zip) { $url = "http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip={$this->zip}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); $this->xmlobj = simplexml_load_string($result); } } public function __get($name) { return $this->xmlobj->Table->$name; } }
который затем можно использовать следующим образом:
$zipInfo = new GetInfoByZIP(97219); print $zipInfo->CITY;
Я бы использовал HTTP POST или GET интерфейсы с curl . Похоже, что он дает вам хороший чистый XML-вывод, который вы могли бы проанализировать с помощью simpleXML .
Что-то вроде следующего идет по пути (предупреждение, совершенно непроверенное здесь):
$ch = curl_init('http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip=string'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); $xml = curl_exec($ch); curl_close($ch); $parsed = new SimpleXMLElement($xml); print_r($parsed);