【问题标题】:Laravel GuzzleHTTP XML Response to JSONLaravel GuzzleHTTP XML 对 JSON 的响应
【发布时间】:2017-01-12 19:50:00
【问题描述】:

我正在调用 NameCheap 的 API,它们返回一个 XML 响应。

当试图输出这个时,我得到响应 NULL。

使用相同的 API,但使用 Google Extension POSTMAN 我得到了我想要的结果,我的响应有问题吗?

public function testCheck($domains){

        $client = new Client();

        $res = $client->request('GET', 'https://api.namecheap.com/xml.response?ApiUser=(username)&ApiKey=(apikey)&UserName(username)&ClientIp=(ip)&Command=namecheap.domains.check&DomainList=' . $domains);

        $data = json_decode($res->getBody());

        dd($data);

    }

我回来了

null

【问题讨论】:

  • 请分享更多代码。调用此 API 的路线和点可能会有所帮助。
  • 这是一个简单的获取路由,将域传递给函数
  • 我不知道您使用什么库来执行请求。但是你确定这是一个同步调用吗?它可能是异步的,所以你必须等待它完成才能使用 ->getBody()?

标签: php json xml laravel guzzle


【解决方案1】:

这就是我用来做那件事的……

从请求开始,像这样:

$client = new Client;
$results = $client->request('GET', $this->namecheap_sandbox_url, [
    'query' => [
        'ApiUser' => $this->ApiUser,
        'ApiKey' => $this->SandboxApiKey,
        'UserName' => $this->UserName,
        'Command' => $this->CheckCommand,
        'ClientIp' => $this->ClientIp,
        'DomainList' => $this->DomainList
    ]
]);

$xml = simplexml_load_string($results->getBody(),'SimpleXMLElement',LIBXML_NOCDATA);

然后转换你的响应,例如:

// json
$json = json_encode($xml);

// array
$array = json_decode($json, true);

// array - dot notation
$array_dot = array_dot($array);

// collection
$collection = collect($array);

【讨论】:

    【解决方案2】:

    你说他们返回 XML,但你试图将它解析为 JSON,这将得到 null。

    将正文保存在变量和dd() 中,而不是将其发送到json_decode() 以确认是XML 并且您正在收到响应。

    之后考虑使用像 SimpleXml http://php.net/manual/en/book.simplexml.php 这样的 XML 解析器

    【讨论】:

      【解决方案3】:

      试试这个

      $res = $client->request('GET', 'https://api.namecheap.com/xml.response?ApiUser=(username)&ApiKey=(apikey)&UserName(username)&ClientIp=(ip)&Command=namecheap.domains.check&DomainList=' . $domains)->send()->json();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 2018-01-14
        相关资源
        最近更新 更多