我使用 curl 在我的 codeigniter 專案中運行 API。在當地環境下一切正常。但是問題出現在實時服務器上。
我使用 ajax 獲取資料,然后使用 curl 呼叫 api 。
在我看來 :
$.ajax({
type: "POST",
url: "<?php echo site_url($websitepagename.'/vacancyservice/')?>",
data: "job_category=" job_category "&location=" location "&contract_type=" contract_type "&search_keyword=" search_keyword,
success: function(data)
{
$("#ajaxBind").html(data);
// $("html, body").animate({ scrollTop: 0 }, "slow");
}
});
在我的控制器中
function vacancyservice() {
$data['response'] = $this->api_call();
$soap = simplexml_load_string($data['response']);
$data['response'] = $soap->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children()->GetVacancyFeedResponse;
$this->load->vars($data);
$this->load->view('ajax_vacancy_list');
}
以及控制器中的我的 Api_call 函式
function api_call() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => ' API URL ',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetVacancyFeed xmlns="http://www1.sniperhire.net/sddf">
<FeedID>FEEDID</FeedID>
<Username>USERNAME</Username>
<Password>PASSWORD</Password>
</GetVacancyFeed>
</soap:Body>
</soap:Envelope>',
CURLOPT_HTTPHEADER => array(
'Content-Type: text/xml; charset=utf-8',
'SOAPAction: SOAP URL'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
此代碼在本地主機上運行但在實時服務器上我收到500 internal server錯誤并出現以下錯誤訊息
Message: Call to a member function children() on bool
錯誤指示在線$data['response'] = $soap->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children()->GetVacancyFeedResponse;控制器vacancyservice()功能
除錯結果
經過相當長的除錯后,我發現在我的api_call()函式$response中由于某種原因為空,它應該包含 XML 回應(在 localhost 上作業正常)
uj5u.com熱心網友回復:
我除錯了很長時間,并找到了解決方案
我添加了
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
它奏效了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532249.html
