2013-03-28 8 views
14

Ich versuche, eine Anfrage an einen Webserver mit PHP und Curl zu senden. Ich habe so etwas noch nie gemacht und obwohl es viele nette Beispiele online gibt, habe ich einige Schwierigkeiten, einige der curl-Befehle zu verstehen.Senden Sie eine XML-Post-Anfrage an einen Webserver mit CURL

Dies ist, was ich tun möchte: Es gibt einen etablierten Web-Service (zum Beispiel: Web-Map-Service) und ich möchte meine PHP-Code eine Post-XML-Anfrage an diesen Dienst senden. Als Antwort möchte ich eine XML-Datei erhalten.

Das ist, was ich habe bis jetzt:

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

Wie gesagt ich in php recht neu bin und auch im Umgang mit curl und ich denke, ich einige Konzepte fehle. Meine Fragen sind: 1) Was ist die Zeichenfolge (link), die ich in die setzen müssen:

  curl_setopt($ch, CURLOPT_URL, ''); 

Ist es der Host-Name des Dienstes, den ich die Anfrage senden?

2) In Zeile 6 enthält die Variable $ xml die XML-Datei, die ich als Anfrage senden möchte. Stimmt es oder diese Variable soll etwas anderes enthalten?

3) In welchen Fällen muss ich einen httpheader oder header (row3 und row4) verwenden;

Danke für die Hilfe. Dimitris

Antwort

28

es auf diese Weise versuchen:

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

Für weitere Informationen besuchen: http://php.net/manual/en/function.curl-setopt.php

+0

Also innerhalb der Tags ich die xml alle Zeichenfolge setzen? – user1919

+1

Wenn Ihr gesamtes XML in $ xml ist, sollte diese Zeile lauten: curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ xml); – PKeidel

+0

Eine andere Sache, die ich nicht klar verstanden habe, ist, was die Variable $ url enthält. Ist der Hostname des Servers, an den ich die Anfrage senden werde? – user1919

Verwandte Themen