如何使用PHP调用API接口( 如何POST一个JSON格式的数据给Restful服务)

来源:互联网 发布:淘宝匿名购买好不好 编辑:程序博客网 时间:2024/05/18 03:06

用curl可执行如下命令:

curl -l -H “Content-type: application/json” -X POST -d ‘{“phone”:”13521389587”,”password”:”test”}’ http://domain/apis/users.json

用jQuery:

$.ajax({  url:url,  type:"POST",  data:data,  contentType:"application/json; charset=utf-8",  dataType:"json",  success: function(){    ...  }})

用 PHP curl实现:

$data = array("name" => "Hagrid", "age" => "36");                                                                      $data_string = json_encode($data);       $ch = curl_init('http://api.local/rest/users');        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  curl_setopt($ch, CURLOPT_HTTPHEADER, array(                       'Content-Type: application/json',      'Content-Length: ' . strlen($data_string))           );                                                                                                                     $result = curl_exec($ch);  

从网上找到了一个请求API的公共方法:

function CallAPI($method, $url, $data = false){    $curl = curl_init();    switch ($method)    {        case "POST":            curl_setopt($curl, CURLOPT_POST, 1);            if ($data)                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);            break;        case "PUT":            curl_setopt($curl, CURLOPT_PUT, 1);            break;        default:            if ($data)                $url = sprintf("%s?%s", $url, http_build_query($data));    }    // Optional Authentication:    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($curl, CURLOPT_HTTPHEADER, array( /*设置请求头*/                       'Content-Type: application/json',          'Content-Length: ' . strlen($data))               );    $result = curl_exec($curl);    AddMessage2Log(print_r($result,true));    curl_close($curl);    return $result;}   

[这是关于curl_setopt的讲解:http://www.runoob.com/php/func-curl_setopt.html]

阅读全文
0 0
原创粉丝点击