Guzzle ClientException - 无效的XML数据

时间:2017-10-10 19:00:40

标签: php xml http post guzzle

我需要向Guzzle发送一个帖子请求,用于我正在处理的项目,并且不断收到400 Bad request错误消息'无效的XML数据'。就设置而言,我尝试了很多不同的组合,并且在所有情况下都会收到相同的错误消息。

有没有其他人遇到过这个问题?任何想法为什么会这样?我提前感谢任何帮助。

$xml = $this->getXml();
$client = new GuzzleHttp\Client();

try {
   $credentials = base64_encode('username:pass');
   $res = $client->post('https://www.example.com',['headers' => ['Content-Type' => 'text/xml; charset=UTF8', 'Authorization' => 'Basic '.$credentials], 'body' => $xml]);

} catch (\GuzzleHttp\Exception\ClientException $e) {
   dd($e->getResponse()->getBody()->getContents());
}

对于$ xml值,我尝试了以下内容:

 $xml = '<?xml version="1.0" encoding="utf-8" ?> 
<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
   <GetCustomerInfo xmlns="http://tempUri.org/">
<CustomerID>1</CustomerID> 
<OutputParam /> 
  </GetCustomerInfo>
</soap:Body>
</soap:Envelope>';

我目前的主要目标是简单地解决此无效XML的特定客户端错误并到达服务器。

1 个答案:

答案 0 :(得分:0)

XML看起来很好,所以代码应该可行。你在回复中有更多细节吗?也许放在XML或其他东西。

只是旁注:您可以使用Authentication选项,而不是手动设置{{1}}标题。