PHP CURL没有在post方法中发送xml

时间:2015-03-24 12:35:12

标签: php xml curl

我正在尝试使用他们的API文档与电信运营商联系。

我需要向他们发送XML请求(在POST中)以及GET方法中的一些凭据。

我构建我的脚本并发布XML,但他们说他们没有收到任何xml。

<?php
$url = "http://<IP>:<PORT>/C2SReceiver?LOGIN=abc&PASSWORD=123";
$xml = '<?xml version="1.0"?>
        <COMMAND>
            <TYPE>k59</TYPE>
            <DATE>19/03/2015 23:20:20</DATE>
            <PIN>11000009</PIN>
            <LOGINID>abc</LOGINID>
            <PASSWORD>123</PASSWORD>
            <EXTCODE>0100</EXTCODE>
            <EXTREFNUM>1230567890</EXTREFNUM>
        </COMMAND>';

    $headers = array(
        "Content-type: text/xml",
        "Content-length: " . strlen($xml),
        "Connection: close",
    );
    // configure
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    // requesting
    $data = curl_exec($ch); 
    // displaying response in XML
    echo $data;
    if(curl_errno($ch))
        print curl_error($ch);
    else
        curl_close($ch);
?>

当我发送请求时,他们的系统说:“来自HashMap的无效邮件格式

他们说,他们只是通过get方法获取参数。他们没有收到任何XML。

请注意::如果我更改了xml格式,他们的系统响应“无效的XML”。

如果他们没有获取我的XML,他们怎么能说它无效。

我浪费了一整天来解决这个问题。不知道什么是错的。请看一下,并告诉我我能做些什么。

感谢。

2 个答案:

答案 0 :(得分:0)

尝试从text / xml更改标题内容类型 - &gt;应用程序/ XML。在执行HTTP请求时,在我的CURLOPT_HTTPHEADER上:

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));

答案 1 :(得分:0)

您的代码没有任何错误。我测试了它,我在 C2SReceiver.php file.i中获取了xml格式数据,只需使用此代码获取xml格式数据。

<?php $x = new SimpleXmlElement(file_get_contents('php://input')); print_r($x);die(); ?>

<?php $x = new SimpleXmlElement(file_get_contents('php://input')); print_r($x);die(); ?>

用于获取curl传递的C2SReceiver.php中的xml数据