標籤:string ade echo pos 並且 對象 開發 接收 eal
開發人員端:發送請求,並接收結果
<?php// 下面的demo,實現的功能如下:// 1-開發人員需要判斷一個使用者是否存在,去請求第三方介面。// 2-與第三方介面的通訊,是以xml格式傳送資料。開發人員把使用者資訊以xml格式發送給第三方介面// 3-第三方介面擷取開發人員的xml資料,通過資料的查詢,把結果再以xml的格式發送給開發人員。//首先檢測是否支援curlif (!extension_loaded("curl")) { trigger_error("對不起,請開啟curl功能模組!", E_USER_ERROR);}//構造xml$xmldata="<?xml version=‘1.0‘ encoding=‘UTF-8‘?><group><name>張三</name><age>22</age></group>";//初始一個curl會話$curl = curl_init();//設定urlcurl_setopt($curl, CURLOPT_URL,"http://localhost/demo/dealxml.php");//設定發送方式:postcurl_setopt($curl, CURLOPT_POST, true);//設定發送資料curl_setopt($curl, CURLOPT_POSTFIELDS, $xmldata);//TRUE 將curl_exec()擷取的資訊以字串返回,而不是直接輸出curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);//執行cURL會話 ( 返回的資料為xml )$return_xml = curl_exec($curl);//關閉cURL資源,並且釋放系統資源curl_close($curl);//echo $return_xml;//exit;//禁止引用外部xml實體libxml_disable_entity_loader(true);//先把xml轉換為simplexml對象,再把simplexml對象轉換成 json,再將 json 轉換成數組。$value_array = json_decode(json_encode(simplexml_load_string($return_xml, ‘SimpleXMLElement‘, LIBXML_NOCDATA)), true);echo "<pre>";print_r($value_array);?>
第三方介面端:接收請求,並返回處理結果
<?php//接收傳送的資料$fileContent = file_get_contents("php://input"); ### 把xml轉換為數組//禁止引用外部xml實體libxml_disable_entity_loader(true);//先把xml轉換為simplexml對象,再把simplexml對象轉換成 json,再將 json 轉換成數組。$value_array = json_decode(json_encode(simplexml_load_string($fileContent, ‘SimpleXMLElement‘, LIBXML_NOCDATA)), true);### 擷取值,進行業務處理$name = $value_array[‘name‘];$age = $value_array[‘age‘];// 通過查詢,判斷該使用者是否存在### 把查詢結果添加到數組中$value_array[‘result‘] = 1;### 把數群組轉換為xml格式,返回$xml = "<?xml version=‘1.0‘ encoding=‘UTF-8‘?><group>";foreach ($value_array as $key=>$val){ if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; }}$xml.="</group>";echo $xml;?>
PHP通過XML報文方式,已第三方介面互動(發送xml,擷取XML,並解析xml步驟)