2009-09-04 16 views

risposta

12

Ecco un semplice esempio che utilizza l'interfaccia curl e 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); 

La variabile $result contiene XML che assomiglia a questo

<?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> 

Una volta che l'XML viene analizzato in un oggetto SimpleXML, si può ottenere in vari nodi in questo modo:

print $xmlobj->Table->CITY; 

Se vuoi essere elegante, puoi inserire l'intera cosa in una classe:

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; 
    } 
} 

che può quindi essere utilizzato in questo modo:

$zipInfo = new GetInfoByZIP(97219); 

print $zipInfo->CITY; 
2

Vorrei utilizzare il HTTP POST o GET interfacce con curl. Sembra che fornisca un output XML pulito e piacevole che è possibile analizzare con simpleXML.

qualcosa come il seguente sarebbe andare lungo la via (avviso, totalmente testato qui):

$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); 
+0

Credo che chiede sul formato, ma Cory" leggere gli esempi mostrati – dusoft