【问题标题】:Sending Guzzle request to itemize api发送 Guzzle 请求以逐项列出 api
【发布时间】:2023-03-20 12:37:01
【问题描述】:

情况:

我需要将请求发送到 api 以更新帐户信息。 API 文档说我需要向 API 发送 PUT 请求。 我尝试在 Laravel 5.6 中执行此操作,尽管我认为这并不重要。

我目前所拥有的:

Guzzle 客户端的工作构造函数; 检索帐户信息的工作函数。

什么不起作用:

提交请求后,我收到 Guzzle 异常

Client error: \`PUT https://sandbox.proapi.itemize.com/api/enterprise/v1/accounts/<my account id>\` resulted in a \`400 Bad Request\` response: IOException: 

这是我目前的代码:

<?php

namespace App\Http\Controllers;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

class ApiController extends Controller {

    private $apiKey;
    private $uri;
    private $client;

    public function __construct() {
        $this->apiKey = 'my api key';
        $this->uri = 'https://sandbox.proapi.itemize.com/api/enterprise/v1/accounts/my account id';
        $this->client = new Client([
            'base_uri' => $this->uri,
            'auth' => [null, $this->apiKey]]);
    }

    public function accountInfo() {
        $response = $this->client->request('GET','');
        echo $response->getBody()->getContents();
    }

    public function updateAccountInfo() {
        $response = $this->client->request('PUT','',[
            'headers' => [
                'Content-Type' => 'application/json',
            ],
            'body' => '{"markets":"UK"}'
        ]);
        echo $response->getBody()->getContents();
    }
}

?>

【问题讨论】:

    标签: http request guzzle


    【解决方案1】:

    400 Bad Request 表示:由于语法无效,客户端发送的请求。

    根据itemize api documentation,“markets”应该作为字符串数组传递。也可以使用json格式。

    试试这个:

    public function updateAccountInfo() {
        $response = $this->client->request('PUT', '', [
            'json' => ["markets" => ["UK"]],
        ]);
        echo $response->getBody()->getContents();
    }
    

    【讨论】:

    • 感谢您的回复。试过了,还是不行。在这一点上,我假设他们的 api 文档没用,并且已经通过电子邮件发送了他们的 CS。实际上,我最初不得不尝试简单地获取帐户信息,因为它没有授权我。我收到了他们代表的回复,他们与他们的技术团队进行了交谈,现在应该可以正常工作了。它是!如果我不得不等待他们“修复”他们文档中的每一件事,我只是有点害怕自己陷入困境。
    • 另一件事 - 我尝试在 cli 上使用 curl 并且只是复制粘贴了他们的示例代码以及电子邮件和联系人数据 - 仍然收到一个错误的请求。一切都确实指向了他们的错误。
    猜你喜欢
    • 1970-01-01
    • 2018-02-07
    • 2017-08-28
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2018-06-02
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多