【问题标题】:Guzzle ClientException - Invalid XML dataGuzzle ClientException - 无效的 XML 数据
【发布时间】:2018-03-22 07:02:30
【问题描述】:

我需要使用 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 的特定客户端错误并到达服务器。

【问题讨论】:

  • 这些都不是有效的 xml 字符串。
  • 那么验证器是错误的,或者你遗漏了一些东西。这只是指仅包含 &lt;note&gt; 的文档,而不是您当前的编辑。
  • @Event,明白了。感谢您的澄清。 Atlhough,即使在编辑之后,使用当前的 XML,我仍然会遇到同样的错误。 ://

标签: php xml http post guzzle


【解决方案1】:

XML 看起来不错,因此代码应该可以工作。你在回复中有更多细节吗?也许位置在 XML 或其他东西中。

附注:您可以使用auth 选项而不是手动设置Authentication 标头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 2014-01-17
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多