2012-01-05 3 views
0
$returnurl = "http://clietsite.com:9000/service"; 
    $curlPost = "rtyinstance=<parent><child>value</child></parent>"; 
    $ch1 = curl_init(); 
    if (!$ch1) die("Couldn't initialize a cURL handle"); 
    $headerinfo = apache_request_headers(); 
    curl_setopt($ch1, CURLOPT_URL, $returnurl); 
    curl_setopt($ch1, CURLOPT_HEADER, 0); 
    curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch1, CURLOPT_POST, true); 
    curl_setopt($ch1, CURLOPT_POSTFIELDS, $curlPost); 
    curl_setopt($ch1, CURLOPT_FRESH_CONNECT, 1); 
    curl_setopt($ch1, CURLOPT_USERAGENT, $headerinfo['User-Agent']); 
    curl_setopt($ch1, CURLOPT_TIMEOUT,1*60); 
    $result = curl_exec($ch1); 
    var_dump($result); 
    echo $responseCode = curl_getinfo($ch1, CURLINFO_HTTP_CODE); 
    curl_close($ch1); 

Приведенный выше код возвращает responseCode 200, var dump prints string (0) "".Выполнение CURL в PHP

, когда я бегу в браузере (я использую PHP версии 5.2.17) как

http://clietsite.com:9000/service?instance=<parent><child>value</child></parent> 

успешно возвращает XML. не знаю, в чем проблема. Пожалуйста, помогите мне решить эту проблему.

+0

Дважды проверьте вход, который вы отправляете на эту услугу, в ожидаемом формате, например. вы, возможно, захотите использовать 'array' для [' CURLOPT_POSTFIELDS'] (http://php.net/curl_setopt), вероятно, потому, что вам не нужно иметь дело с кодировкой значений post. – hakre

+0

Я определил массив $ postArray = array(); $ postArray ['rtyinstance'] = $ currentXML; и используется как curl_setopt ($ ch1, CURLOPT_POSTFIELDS, $ postArray); – Arasu

+0

, но возвращает – Arasu

ответ

0

С помощью cURL вы используете POST, а в браузере вы отправляете GET.

Возможно, это проблема.

«Преобразовывать», чтобы получить, используйте этот код:

$encoded_params = urlencode('<parent><child>value</child></parent>'); 
$returnurl = "http://clietsite.com:9000/service?rtyinstance=" . $encoded_params; 
$ch1 = curl_init(); 
if (!$ch1) die("Couldn't initialize a cURL handle"); 
$headerinfo = apache_request_headers(); 
curl_setopt($ch1, CURLOPT_URL, $returnurl); 
curl_setopt($ch1, CURLOPT_HEADER, 0); 
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch1, CURLOPT_FRESH_CONNECT, 1); 
curl_setopt($ch1, CURLOPT_USERAGENT, $headerinfo['User-Agent']); 
curl_setopt($ch1, CURLOPT_TIMEOUT,1*60); 
$result = curl_exec($ch1); 
var_dump($result); 
echo $responseCode = curl_getinfo($ch1, CURLINFO_HTTP_CODE); 
curl_close($ch1); 
+0

как я могу пройти как получить поля в curl – Arasu

+0

@Arasu: Я обновил свой ответ –

+1

[Как перейти с POST на GET в PHP CURL] (http://stackoverflow.com/questions/1225409/how-to -switch-from-post-to-get-in-php-curl) – hakre

-1

Следующая URL не доступен для меня:

http://clietsite.com:9000/service?rtyinstance=<parent><child>value</child></parent> 

Является ли этот сайт действительно доступный снаружи вашего компьютера/сети? Если вы размещаете скрипт на одном сервере и веб-сайт на другом, это может не сработать.

+0

Я указал название сайта и порт – Arasu

+0

Извините, но это было непонятно из вашего вопроса. – Magnus

Смежные вопросы