由於我平時的工作,大部分都是與不同平臺進行交互,所以curl就這樣進入到我的工作中。
curl很博大精深,需要仔細研讀,但是每每的都是用到那一些,所以每每遇到問題,都要查幫助手冊的啊,我暫且把工作中遇到的問題先羅列一下:
1、關於json格式交互的需要注意一點:
$header[] = 'Content-type:application/json';
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonstr);
2、關於GET不到內容的問題
一般獲取不到內容,是因爲你訪問的頁面進行了跳轉,所以需要進行設置一下
curl_setopt($curl_obj, CURLOPT_FOLLOWLOCATION ,1); //加入重定向處理
3、關於頁面編碼的問題
$header[] = "Content-Type: text/xml; charset=UTF-8";
暫且如此,有時也不能太思維定勢,要思路開闊。
4、關於接收到xml格式字符串的問題
對於curl get過來的內容xml格式,如果要獲取節點的內容,那麼最好用simplexml_load_string()函數,比如說
$xml = simplexml_load_string($response);
$obj_submiturl = $xml->Order->Submit0->ButtonTag->SubmitUrl;
$submiturl = '';
foreach ($obj_submiturl as $v){
$submiturl = $v;
unset($v);
}
不過對於最後一層,我還是沒弄明白的,爲啥獲取最後一個節點不是值,而是一個對象呢,需要再遍歷一下,有誰可以解釋一下的?
數據如下:
object(SimpleXMLElement)#2 (2) {
["ResultCode"]=>
string(3) "200"
["Order"]=>
object(SimpleXMLElement)#1 (1) {
["Submit0"]=>
object(SimpleXMLElement)#4 (1) {
["ButtonTag"]=>
object(SimpleXMLElement)#5 (1) {
["SubmitUrl"]=>
string(302) "http:"
}
}
}
}
object(SimpleXMLElement)#1 (1) {
[0]=>
string(302) "http:"
}