繁体   English   中英

PHP 中的 Curl API 调用

[英]Curl API call in PHP

我是 PhP 的新手,并尝试使用 curl 向第三方 API 发出请求。 这就是我正在尝试的,但它只是响应 API 根端点上的内容。

$service_url = 'http://api.kivaws.org/graphql';
$curl = curl_init($service_url);
$curl_post_data = array(
        'Pragma' => 'no-cache',
        'Origin' => 'http://api.kivaws.org', 
        'Accept-Encoding' => 'gzip, deflate', 
        'Accept-Language' => 'en-US,en;q=0.8', 
        'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', 
        'content-type' => 'application/json', 
        'accept' => 'application/json', 
        'Cache-Control' => 'no-cache', 
        'Connection' => 'keep-alive', 
        'data' => '{"query":"{
          loans (filters: {gender: male, status:funded, country: [\"KE\", \"US\"]}, sortBy: newest, limit: 2) {
            totalCount
            values {
              name
              status
              loanAmount
            }
          }
        }","variables":null,"operationName":null}'
);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
    $info = curl_getinfo($curl);
    curl_close($curl);
    die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
curl_close($curl);

echo $curl_response;

这似乎在curl_setopt :使用curl_setopt设置一些重要的东西,比如CURLOPT_HTTPHEADERCURLOPT_RETURNTRANSFERTrue以便它会在正文中返回我们的结果,然后使用json_encode对查询进行编码。

$service_url = 'http://api.kivaws.org/graphql';

$curl = curl_init($service_url);

$curl_post_data = array("query" => '{loans (filters: {gender: male, status:funded, country: ["KE", "US"]}, sortBy: newest, limit: 2) {totalCount values { name  status loanAmount }}}');
$data_string =  json_encode($curl_post_data);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);

$curl_response = curl_exec($curl);
if ($curl_response === false) {
    $info = curl_getinfo($curl);
    curl_close($curl);
    die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
echo $curl_response;
echo $info;

这让我返回:

{"data":{"loans":{"totalCount":40425,"values":[{"name":"Davis","status":"funded","loanAmount":"100.00"},{"name":"James","status":"funded","loanAmount":"100.00"}]}}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM