Laravel GuzzleHTTP XML响应JSON

snz8szmq  于 2023-05-19  发布在  其他
关注(0)|答案(3)|浏览(229)

我调用NameCheap的API,他们返回一个XML响应。
当我尝试输出这个时,我得到的响应是NULL。
点击相同的API,但与谷歌扩展 Postman 我得到的结果,我后,我做了什么错误的React?

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
u5rb5r59

u5rb5r591#

这就是我用来做的...
从请求开始,像这样:

$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);
xoefb8l8

xoefb8l82#

你说他们返回XML,但你试图将其解析为JSON,这将得到null。
将正文保存在一个变量和dd()中,而不是将其发送到json_decode()以确认是XML,并且您正在获得响应。
然后,考虑使用像SimpleXml http://php.net/manual/en/book.simplexml.php这样的XML解析器

9jyewag0

9jyewag03#

试试这个

$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();

相关问题