2013-03-28 17 views
14

Próbuję wysłać żądanie do serwera WWW za pomocą php i curl. Nie zrobiłem czegoś takiego wcześniej i chociaż istnieje wiele miłych przykładów w Internecie, mam pewne trudności ze zrozumieniem niektórych poleceń curl.Wysyłaj żądanie wpisu XML do serwera WWW za pomocą CURL

Oto, co chcę zrobić: istnieje ustalony serwis internetowy (na przykład: usługa map internetowych) i chcę, aby mój kod php przesłał żądanie XML postu do tej usługi. Jako odpowiedź chcę uzyskać plik XML.

To jest to, co mam do tej pory:

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

Jak powiedziałem jestem zupełnie nowy w php, a także za pomocą curl i myślę, że jestem brakuje niektórych pojęć. Moje pytania są następujące: 1) Jaki jest ciąg (link), że muszę umieścić w:

  curl_setopt($ch, CURLOPT_URL, ''); 

Czy nazwa hosta usługi, które chcę wysłać wniosek?

2) W wierszu 6 zmienna $ xml zawiera plik xml, który chcę wysłać jako żądanie. Czy to prawda, czy ta zmienna ma zawierać coś innego?

3) W których przypadkach należy użyć nagłówka httphead lub nagłówka (wiersz3 i wiersz4);

Dzięki za pomoc. Dimitris

Odpowiedz

28

Spróbuj to tak:

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

Więcej szczegółów na stronie: http://php.net/manual/en/function.curl-setopt.php

+0

Więc wewnątrz tagów kładę cały ciąg xml? – user1919

+1

Jeśli cały twój xml znajduje się w $ xml, wiersz powinien wyglądać następująco: curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ xml); – PKeidel

+0

Inną rzeczą, której nie zrozumiałem wyraźnie, jest zawartość zmiennej $ url. Czy nazwa hosta serwera, do którego wyślę żądanie? – user1919

Powiązane problemy