2009-09-04 21 views

Respuesta

12

Aquí hay un ejemplo simple que utiliza la interfaz de rizo y el 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 variable $result contiene XML que se parece a este

<?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 vez que el XML se analiza en un objeto SimpleXML, se puede obtener en los diferentes nodos de la siguiente manera:

print $xmlobj->Table->CITY; 

Si quieres ser elegante, puedes poner todo en una clase:

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

que luego puede ser utilizada como esto:

$zipInfo = new GetInfoByZIP(97219); 

print $zipInfo->CITY; 
2

me gustaría utilizar el HTTP POST o GET las interfaces con curl. Parece que le da una salida XML clara y agradable que puede analizar con simpleXML.

algo como lo siguiente sería estar de camino (advertencia, totalmente no probado aquí):

$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

Creo que se está preguntando por el formato, pero Cory" leer los ejemplos mostrados – dusoft