2013-03-28 9 views
14

Sto tentando di inviare una richiesta a un server Web utilizzando php e arricciare. Non ho mai fatto qualcosa di simile prima e sebbene ci siano molti buoni esempi online ho alcune difficoltà a capire alcuni dei comandi di arricciatura.Invia una richiesta di post XML a un server Web con CURL

Questo è ciò che voglio fare: esiste un servizio Web stabilito (ad esempio: servizio di mappe Web) e desidero che il mio codice php invii una richiesta XML post a questo servizio. Come risposta voglio ottenere un file XML.

Questo è quello che ho fino ad ora:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, ''); 
    /*curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));*/ 
    /* curl_setopt($ch, CURLOPT_HEADER, 0);*/ 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
    /*curl_setopt($ch, CURLOPT_REFERER, '');*/ 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $ch_result = curl_exec($ch); 
    curl_close($ch); 
    echo $ch_result; 

Come ho già detto io sono abbastanza nuovo in PHP e anche nell'uso ricciolo e penso che mi manca alcuni concetti. Le mie domande sono: 1) Qual è la stringa (link) che devo mettere in:

  curl_setopt($ch, CURLOPT_URL, ''); 

E 'il nome host del servizio di cui voglio inviare la richiesta?

2) Nella riga 6 la variabile $ xml contiene il file xml che desidero inviare come richiesta. È corretto o si suppone che questa variabile contenga qualcos'altro?

3) In quali casi è necessario utilizzare un httpheader o un'intestazione (riga3 e riga4);

Grazie per l'aiuto. Dimitris

risposta

28

Prova in questo modo:

$url = 'https://android.googleapis.com/gcm/send'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "<xml>here</xml>"); 
    $result = curl_exec($ch); 
    curl_close($ch); 

Per maggiori dettagli visita: http://php.net/manual/en/function.curl-setopt.php

+0

Quindi all'interno dei tag ho messo tutta la stringa XML? – user1919

+1

Se l'intero xml è in $ xml, tale riga deve essere: curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ xml); – PKeidel

+0

Un'altra cosa che non ho capito chiaramente è ciò che la variabile $ url contiene. È il nome host del server che invierò la richiesta? – user1919

Problemi correlati