PHP,读取通过cURL发送的XML文件

时间:2012-08-20 07:25:18

标签: php xml url curl readxml

我有这个代码,我通过cURL将数据发送到新闻办公室。现在我想得到媒体的反馈,我的订单已经确认或完成。我想在XML文件中也有这个。我知道如何通过curl发送文件,现在我想知道我如何收到它们,以便我可以读出数据。欢迎任何建议。

这就是我发送XML的方式:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $incomm_prod_server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_POSTFIELDS, str_replace('{voucher_code}', $voucher_code, $xml_data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));

所以这就是我在ither方面做的事情来获取XML:

  $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    $result_xml = simplexml_load_string(curl_exec($ch));

但是我得到bool(false)作为结果,所以没有发送xml?

编辑:我可以像这样访问数据:

  if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
        $postText = file_get_contents('php://input');
    }
    die(var_dump($postText));

我最后一次编辑,也许它会帮助其他人,我现在以这种方式访问​​我的xml:

            if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
            $postText = file_get_contents('php://input');
        }
        $xml = new SimpleXMLElement($postText);
        $packing_number = $xml->xpath('/feedback/packing_number');
        $packing_status = $xml->xpath('/feedback/packing_status');

这将为您提供一个数组,您可以像以下一样访问它:

  

$ packing_number [0]

或者只是循环它。

1 个答案:

答案 0 :(得分:2)

好的,所以上面发布的代码不会真正发送XML文件。它只是将该XML文件的内容放入附加到请求的$_POST变量中。

要接收数据(另一方面),您所要做的就是查看$_POST变量,您的XML数据应该在那里。您将设置一个脚本并将数据发布到该脚本(可能使用您在上面使用的相同方法),并且您可以访问该内容。