PHP中的CURL执行

时间:2012-01-05 09:02:48

标签: php curl

    $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版本5.2.17) 喜欢

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

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

2 个答案:

答案 0 :(得分:0)

通过cURL,您正在使用POST,而在浏览器中则发出GET。

这可能是个问题。

要“转换”为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);

答案 1 :(得分:-1)

我无法使用以下网址:

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

该网站是否可以从您的计算机/网络外部访问?如果您在一台服务器上托管该脚本而在另一台服务器上托管该网站,则可能无效。