Php 如何通过狂饮来跑步

Php 如何通过狂饮来跑步,php,curl,guzzle,Php,Curl,Guzzle,第一次使用卷发和口吻。这可能是一个简单的问题,但请举一个“helloworld”的例子 这是我目前的卷曲度: curl --include --request POST \ --header "application/x-www-form-urlencoded" \ --header "X-Access-Token: ACCESS_TOKEN" \ --data-binary "grant_type=client_credentials&client_id=PUBLIC_KEY&

第一次使用卷发和口吻。这可能是一个简单的问题,但请举一个“helloworld”的例子

这是我目前的卷曲度:

curl --include --request POST \
--header "application/x-www-form-urlencoded" \
--header "X-Access-Token: ACCESS_TOKEN" \
--data-binary "grant_type=client_credentials&client_id=PUBLIC_KEY&client_secret=PRIVATE_KEY" \
'https://api.url.com/token'
这是狂饮的代码:

$client = new Client(); //GuzzleHttp\Client
$result = $client->post('https://api.url.com/token', [
    'form_params' => [
        'sample-form-data' => 'value'
    ]
]);

我不知道如何使用guzzle运行cURL命令。生成的guzzle代码是什么样子的?

您可以通过调用“getBody”函数来获取/查看guzzle调用的结果。在您的例子中,$result->getBody()

下面是将卷曲转换为狂饮的答案。也许它会帮助像我一样需要“地狱世界”的未来人们。以下是我通过Guzzle在PHP中运行cURL的方式:

$client = new Client();
$uri = 'https://api.url.com/token';
$headers = [
    'Content-Type' => 'application/x-www-form-urlencoded',
    'X-Access-Token' => $ACCESS_TOKEN
];
$body = 'grant_type=client_credentials&client_id='.$PUBLIC_KEY.'&client_secret='.$PRIVATE_KEY;
$result = $client->request('POST', $uri, [
    'headers' => $headers,
    'body' => $body
]);

json_decode($result->getBody()->getContents(), true);

两件不直观的事情是,您必须将“application/x-www-form-urlencoded”指定为内容类型。“数据二进制”为“body”。

很抱歉回答得太晚,我看到您已经找到了。虽然它可以工作,但像这样手动编码你的身体有效载荷并不是“最佳实践”

Guzzle提供了一种更清洁的方式,并在内部构建车身有效载荷:

$result = $client->post('https://api.url.com/token', [
  'headers' => ['X-Access-Token' => 'ACCESS_TOKEN'],
  'form_params' => [
    'grant_type' => 'client_credentials',
    'client_id' => 'PUBLIC_KEY',
    'client_secret' => 'PRIVATE_KEY',
  ],
]);
Guzzle自动完成与
/
&
的正确连接以及添加
应用程序/x-www-form-urlencoded
。这是由上述代码发送的请求:

POST /token HTTP/1.1
Content-Length: 76
User-Agent: GuzzleHttp/6.3.3 curl/7.57.0 PHP/7.2.2
Content-Type: application/x-www-form-urlencoded
Host: api.url.com
X-Access-Token: ACCESS_TOKEN

grant_type=client_credentials&client_id=PUBLIC_KEY&client_secret=PRIVATE_KEY

这应该已经发送了POST请求。如果您在PHP中启用了
ext\u curl
,它甚至更愿意使用curl。问题是什么?在您传递的选项数组中,您还可以放置一个
headers
键来传递Auth/Token头。看看如何使用guzzle编写上面的cURL代码?生成的php代码是什么样子的?我不知道如何才能让问题更清楚。如果不清楚,我道歉。我基本上是在问如何在php中运行cURL。我是卷发新手。也许我的问题不太清楚?如果是这样,我道歉。基本上,我想弄清楚如何使用php运行cURL命令。这是我第一次使用php中的cURL。