将xml回发重新发布到另一个网址

时间:2016-04-11 14:17:21

标签: php xml postback

我们目前正在使用Ultracart将xml回发到我们服务器上的网址。我正在尝试做的是接收xml,然后右转并将其发布到另一个页面。 (对于我们正在进行的项目,我们无法将回发发送到多个来源。)以下是我一直在玩的内容:

$xml = file_get_contents('php://input');
$url = 'https://destinationlink';


$post_data = array(
    "xml" => $xml,
);

$stream_options = array(
    'http' => array(
       'method'  => 'POST',
       'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
       'content' => http_build_query($post_data),
    ),
);
$context  = stream_context_create($stream_options);
$response = file_get_contents($url, null, $context);

我知道我在这里缺少一些重要的东西......我想我已经看了太久了,我看不出问题......可能是一件非常简单的事情。

1 个答案:

答案 0 :(得分:0)

事实证明,CURL就是答案。

//URL where to send the data via POST
$URL1 = 'http://destinationlink';

//the actual data
$xml_data1 = file_get_contents('php://input');


    $ch1 = curl_init($URL1);
    curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch1, CURLOPT_POST, 1);
    curl_setopt($ch1, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
    curl_setopt($ch1, CURLOPT_POSTFIELDS, "$xml_data1");
    curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
    $output1 = curl_exec($ch1);
    curl_close($ch1);

这就像一个魅力。

我可以收到XML回发(php://输入),根据目标URL使用此curl代码创建不同的块,并将信息逐个发送到我需要的所有单独连接。