2012-01-05 53 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打印字符串(0)“”。PHP中的CURL执行

当我在浏览器中运行

(我使用的PHP版本5.2.17) 像

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

并成功返回的XML。不知道可能是什么问题。请帮我解决这个问题。

+0

仔细检查您发送给该服务的输入是否处于预期格式,例如,你可能想为['CURLOPT_POSTFIELDS'](http://php.net/curl_setopt)使用'array',可能是因为你不需要处理编码后的值。 – hakre 2012-01-05 09:08:42

+0

我定义了一个数组$ postArray = array(); $ postArray ['rtyinstance'] = $ currentXML;并使用像curl_setopt($ ch1,CURLOPT_POSTFIELDS,$ postArray); – Arasu 2012-01-05 09:12:20

+0

但返回空 – Arasu 2012-01-05 09:12:36

回答

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

我如何通过作为获取字段卷曲 – Arasu 2012-01-05 09:08:24

+0

@Arasu:我更新了我的答案 – 2012-01-05 09:12:35

+1

[如何从POST切换到GET在PHP CURL](http://stackoverflow.com/questions/1225409/how-to -switch-post-to-get-in-php-curl) – hakre 2012-01-05 09:12:43

-1

以下网址不适用于我:

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

是该网站的真正访问您的计算机/网络之外?如果您将脚本托管在一台服务器上,而另一台上的网站则可能无法使用。

+0

我指定了示例站点名称和端口 – Arasu 2012-01-05 09:13:33

+0

对不起,虽然您的问题尚不清楚。 – Magnus 2012-01-10 19:59:04