PHP - curl_exec()格式错误的结果

时间:2014-02-05 14:10:46

标签: php xml curl soap

我的PHP函数curl_exec()存在问题。我正在向一个建议发送一个SOAP请求,并且该建议应该返回一个SOAP响应,但我只是得到一个没有XML标记的String。

好的,我正在使用此代码:

protected function _send_request($url,$post_string) {
    $soap_do = curl_init();
    curl_setopt($soap_do, CURLOPT_URL,            $url );

    curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($soap_do, CURLOPT_TIMEOUT,        10);
    curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($soap_do, CURLOPT_POST,           true );
    curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $post_string);
    curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($post_string) ));
    if ( ($result = curl_exec($soap_do)) === false) {
        echo curl_error($soap_do);
    } 
    else {
        echo("<pre>".$result."</pre>");
    }
}

代码似乎有效。我使用Wireshark捕获了网络流量,TCP包中的响应是:

<?xml version='1.0' encoding='utf-8'?>
<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:tds=\"http://www.onvif.org/ver10/device/wsdl\" xmlns:tt=\"http://www.onvif.org/ver10/schema\">
    <s:Body>
        <tds:GetSystemDateAndTimeResponse>
            <tds:SystemDateAndTime>
                <tt:DateTimeType>
                    Manual
                </tt:DateTimeType>
                <tt:DaylightSavings>
                    true
                </tt:DaylightSavings>
                <tt:TimeZone>
                    <tt:TZ>
                        CET-1CEST,M3.5.0,M10.5.0/3
                    </tt:TZ>
                </tt:TimeZone>
                <tt:UTCDateTime>
                    <tt:Time>
                        <tt:Hour>
                            13
                        </tt:Hour>
                        <tt:Minute>
                            26
                        </tt:Minute>
                        <tt:Second>
                            21
                        </tt:Second>
                    </tt:Time>
                    <tt:Date>
                        <tt:Year>
                            2014
                        </tt:Year>
                        <tt:Month>
                            2
                        </tt:Month>
                        <tt:Day>
                            5
                        </tt:Day>
                    </tt:Date>
                </tt:UTCDateTime>
                <tt:LocalDateTime>
                    <tt:Time>
                        <tt:Hour>
                            14
                        </tt:Hour>
                        <tt:Minute>
                            26
                        </tt:Minute>
                        <tt:Second>
                            21
                        </tt:Second>
                    </tt:Time>
                    <tt:Date>
                        <tt:Year>
                            2014
                        </tt:Year>
                        <tt:Month>
                            2
                        </tt:Month>
                        <tt:Day>
                            5
                        </tt:Day>
                    </tt:Date>
                </tt:LocalDateTime>
            </tds:SystemDateAndTime>
        </tds:GetSystemDateAndTimeResponse>
    </s:Body>
</s:Envelope>

现在问题。 echo $ result只返回

ManualtrueCET-1CEST,M3.5.0,M10.5.0/3134622201425144622201425

XML结构似乎丢失了,我无法重新创建它。我正在使用XAMPP PHP版本5.3.1和curl扩展。有没有人知道如何获得原始的XML结构?

0 个答案:

没有答案