向API 介面傳送和接收json資料(php,js)
阿新 • • 發佈:2019-02-13
PHP
1. 傳送json資料,POST
private function https_request($url, $data)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl , CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
return $output;
}
需要傳進來json格式下的data和url介面
在微信介面中,為了避免出現 unicode編碼的問題,傳進來的data資料要經過處理,處理過程:
//陣列形式的
$msg['type'] = '....';
$msg['text'] = '....';
$msg['text] = urlencode($msg['text']);
$data = urldecode(json_encode($msg));
2. 接收json資料
上方的程式碼https_request,已經返回了json資料
//把返回值json_decode一下,記得後面的true不能掉,如果沒寫true,預設返回的值是列印msg['text']出來是這樣的".....",寫上true,打印出來是 .... , 即不帶雙引號。
$return = json_decode($res,true );
JS
利用ajax可以進行介面呼叫,但是注意跨站問題,跨站是不允許呼叫的。
var request2 = new XMLHttpRequest();
request2.open("GET","http:......&text="+text+"&type="+type);
request2.send(null); request2.onreadystatechange = function() { if(request2.readyState == 4 && request2.status == 200) {
var result = request2.responseText;
//進行的操作就是去掉雙引號
result = eval("(" + result + ")");
直接在URL中帶過去資料,具體可以參考XMLHttpRequest(),4,200是返回值,具體的也要參考文件。