加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 想要使用cURL而不是SimpleXML_load_file()

发布时间:2020-12-13 16:55:05 所属栏目:PHP教程 来源:网络整理
导读:使用下面的脚本我可以成功解析API数据. $xml_report_daily=simplexml_load_file("https://api.sitename.com/api/reports/api_get.asp?User=00012345Key=abcdefghijklmnopfromDate=11/12/2014toDate=12/12/2014mid=25");foreach ($xml_report_daily as $repor
使用下面的脚本我可以成功解析API数据.

$xml_report_daily=simplexml_load_file("https://api.sitename.com/api/reports/api_get.asp?User=00012345&Key=abcdefghijklmnop&fromDate=11/12/2014&toDate=12/12/2014&mid=25");

foreach ($xml_report_daily as $report_daily):
    $trans_id=$report_daily->TRANSID;
    $trans_id=$report_daily->MID;
    $trans_id=$report_daily->EXT;
    $trans_id=$report_daily->USER;
endforeach;

XML数据是这样的:

<DATABASE>
    <RECORD>
        <TRANSID>1348818</TRANSID>
        <MID/>
        <EXT>0</EXT>
        <USER>00012345</USER>
    </RECORD>
    .
    .
    .
    so on...
</DATABASE>

但我想使用cURL而不是simplexml_load_file.所以我使用下面的脚本,但它没有提供任何结果数据.

$url = "https://api.sitename.com/api/reports/api_get.asp?User=00012345&Key=abcdefghijklmnop&fromDate=11/12/2014&toDate=12/12/2014&mid=25"; 
$ch = curl_init();
curl_setopt ($ch,CURLOPT_URL,$url);
curl_setopt ($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,false);
$xml = curl_exec($ch);
echo $xml;

请让我知道我错过了什么或做错了什么.

谢谢,

解决方法

好的,这是我的完整答案,希望对其他人有用.

我使用了两种方法从特定链接读取XML数据.

方法#1:使用simplexml_load_file() – allow_url_fopen应该在托管服务器上为ON,以使此方法有效.这种方法在我的本地服务器和实际服务器上都运行良好.

$xml_report_daily=simplexml_load_file("https://api.sitename.com/api/reports/api_get.asp?User=00012345&Key=abcdefghijklmnop&fromDate=11/12/2014&toDate=12/12/2014&mid=25");

foreach ($xml_report_daily as $report_daily):
    $trans_id=$report_daily->TRANSID;
    $m_id=$report_daily->MID;
    $ext_id=$report_daily->EXT;
    $user_id=$report_daily->USER;
    echo $trans_id."&nbsp;".$m_id."&nbsp;".$ext_id."&nbsp;".$user_id."<br/>";
endforeach;

方法#2:使用cURL – 按照这里的建议进行操作后,现在这个方法在我的本地服务器和实际服务器上都运行良好.

$url = "https://api.sitename.com/api/reports/api_get.asp?User=00012345&Key=abcdefghijklmnop&fromDate=11/12/2014&toDate=12/12/2014&mid=25"; 
$ch = curl_init();
curl_setopt ($ch,false);
$xml = curl_exec($ch);

$xml_report_daily = simplexml_load_string($xml);

foreach ($xml_report_daily as $report_daily):
    $trans_id=$report_daily->TRANSID;
    $m_id=$report_daily->MID;
    $ext_id=$report_daily->EXT;
    $user_id=$report_daily->USER;
    echo $trans_id."&nbsp;".$m_id."&nbsp;".$ext_id."&nbsp;".$user_id."<br/>";
endforeach;

使用cURL时,我没有得到结果数据,因此paul-crovella建议我检查错误.所以我使用下面的脚本,我发现我正在尝试访问Raffy Cortez提到的https(SSL证书)数据

if(curl_exec($ch) === false)
    { echo 'Curl error: ' . curl_error($ch); }
else
    { echo 'Operation completed without any errors'; }

要解决此https(SSL证书)相关问题,这里是非常有用的链接,您可以根据需要使用其中提到的任何方法.

HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed,CA is OK

谢谢,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读