CURL,JSON and PHP


CURL,JSON and PHP

我正在使用curl和PHP 与API连接

我有这个CURL声明

curl -i --user api:YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1 --data-binary @test.png https://api.blahblah.com/blah

其中YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1是api密钥,@test.png是我需要传输到api上传的图像文件。我不知道的是如何为上面的链接写卷曲

我还有这个网站为开发者提供的示例语句(看起来是JSON)

POST /blah HTTP/1.1
Host: api.blahblah.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1

到目前为止,我已经写了这个,

$url = 'https://api.tinypng.com/shrink';
$image = 'bf4lwp2.png';
$key = 'YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1';
$jsonscript = array( 
'Host' => 'api.tinypng.com',
'Authorization' => $key );
$json_string = json_encode($jsonscript);
$ch = curl_init($url);
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api:'.$key);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $image);
// Execute
$result=curl_exec($ch);

此外,如果我的请求成功,我会得到这个。。。

HTTP/1.1 201 Created
Location: https://api.blahblah.com/blahblah.png
Content-Type: application/json; charset=utf-8
{
  "input": {
    "size": 87654
  },
  "output": {
    "size": 102020,
    "ratio": 0.236
  }
}

我知道我必须使用file_get_contents()才能获得所有这些,但我不知道该在该函数中放入什么URL。

要首先从json中获取数据,可以使用json解码,然后使用foreach循环将这些数据解析为变量