没有得到网络服务的回复 - 不知道我做错了什么

时间:2014-03-01 18:15:29

标签: php curl

这是我第一次从网络服务中获取回报。我期待的是'授权失败'的效果。 URL在我们的测试环境中是一个,并且发送的XML是正确的,但我没有收到回复,也不知道我做错了什么。

服务是REST,标头必须传递编码授权(此示例是正确的),内容类型设置为xml。

当我使用相同的参数在Chrome中的Advanced Rest Client中对其进行测试时,它会连接并给我回复。

此外,如果有更好的方法来创建XML,我就是为了这一切 - 这只是我发现并开始的一个例子。代码如下

<?php
    if (!isset($_POST['firstname']))   {
?>

    <form name="ppost" method="post" action="<?=$_SERVER['PHP_SELF']?>">
        <input type="text" name="firstname" />
        <input type="submit" name="SUbmit" value="Submit" />
    </form>
<?php

    } // end if, form not posted

    else {

        extract($_POST);

        $inputdata = '
        <ReqGetWebUserInfo>
        <OrgId>598</OrgId>
        <OrgUnitId>598</OrgUnitId>
        <MasterCustomerId>'.$firstname.'</MasterCustomerId>
        <SubCustomerId>0</SubCustomerId>
        </ReqGetWebUserInfo>';

        echo '<pre>'.$inputdata.'</pre>';

        $url = "https://gsusacustom.ebiz.uapps.net/GSUSARestWebService/PersonifyWcfSvc.svc/GetWebUserInfo";
        $headers = array(
                    'Authorization: Basic dG1hc2d1bmRhbTpwYXNzd29yZDE=',
                    'Content-Type: application/xml;charset=utf-8',
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url );                   //  THE URL TO FETCH - CAN ALSO BE SET IN THE CURL_INIT
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);         
        curl_setopt($ch, CURLOPT_HEADER, 0);                    //  DON'T INLCUDE HEADER IN THE OUTPUT
        curl_setopt($ch, CURLOPT_POST, 1);                      //  TRUE FOR A REGULAR HTTP POST 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $inputdata);       //  THE DATA POST FROM THE FORM
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($ch);
        curl_close ($ch);
        print $response;

    }                                                       // end else, form submitted and processed 

?>

提前致谢。

1 个答案:

答案 0 :(得分:0)

我的猜测是你没有处理https连接。试试这个选项:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

如果错误仍然存​​在,请执行以下操作以进行更多操作。

运行代码并启用所有错误报告:

error_reporting(E_ALL);

使用启用调试选项运行curl:

curl_setopt($ch, CURLOPT_VERBOSE, 1);