【问题标题】:XML Request Using CURL使用 CURL 的 XML 请求
【发布时间】:2014-08-04 23:56:43
【问题描述】:

我正在使用 curl 库获取 XML,但与主机连接出错。以下是我的代码,我刚刚删除了凭据。

$url="https://interface.callport.net:8080/P-RVWR-drcm01-cti/call/2142100570";

$curl_post_data = array(
  "query_type" => 'caller_info',
  "dnis" => '8883874944',
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, base64_encode('webapi@fastfix:color43t'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_post_data);

$result = curl_exec($ch);

if(curl_errno($ch))
{
  echo 'Curl error: ' . curl_error($ch);
}
else
{    
  echo $result;
}

curl_close($ch);

【问题讨论】:

    标签: php xml api rest curl


    【解决方案1】:

    它是 SSL,所以这通常可以解决问题。此时 cURL 不会验证证书。

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    [编辑] 我解决了这些问题。首先是如上所述的 SSL,然后我删除了用户名和密码的 base64 编码,更改为通过 GET 而不是 POST 发送数据,最后修复了标头。

    $url="https://interface.callport.net:8080/P-RVWR-drcm01-cti/call/2142100570?query_type=caller_info&dnis=8883874944";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($ch, CURLOPT_USERPWD, 'webapi@fastfix:color43t');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    【讨论】:

    • 尝试添加上述变量但没有成功。
    • 现在我在答案中添加了更多内容。它似乎至少在这里工作。
    • 亲爱的 Karl, 感谢您的努力,但不知道为什么我会收到相同的错误 Curl 错误:无法连接到主机。我已经从我的两台服务器发送了请求,但似乎我必须将来自 intelemedia 的链接列入白名单。
    猜你喜欢
    • 2012-07-29
    • 1970-01-01
    • 2021-09-14
    • 2013-12-09
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多