使用下面的脚本我可以成功解析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;
请让我知道我错过了什么或做错了什么。
谢谢,
答案 0 :(得分:3)
好的,这是我的完整答案,希望对其他人有用。
我使用了2种方法从特定链接读取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." ".$m_id." ".$ext_id." ".$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, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 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." ".$m_id." ".$ext_id." ".$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
谢谢,
答案 1 :(得分:0)
您在cURL中呼叫 https 网址,您需要使用
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);