CURL,JSON和PHP

问题描述 投票:1回答:1

我正在使用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。

php json curl http-post transfer
1个回答
0
投票

要首先从json获取数据,您可以使用json解码,而不是使用foreach循环将这些数据解析为变量

© www.soinside.com 2019 - 2024. All rights reserved.