【问题标题】:Trouble with simplexml_load_string in PHP with Soap response带有 Soap 响应的 PHP 中的 simplexml_load_string 出现问题
【发布时间】:2012-03-05 20:19:30
【问题描述】:
  • 很少修改*

我正在使用 SoapClient 处理 Web 服务,该服务会产生一系列 anyType。我尝试在响应中使用 simplexml_load_string(可能是错误的),但它失败了导致 simplexml_load_string 没有被设置。

除此之外,我调用 Web 服务的 PHP 代码:(这里没问题)

$client->InvokeWorkflow( $params );

然后我将响应捕获为 $response:

$response = $client->__getLastResponse();

当我 var_dump $response 我得到:

string(1404) "XmlOut<Organisations xmlns="http://www.XXXXXXXX.net/Schemas/Provision/Organisations.xsd"><Organisation xmlns="http://www.XXXXXXXX.net/Schemas/Provision/Organisations.xsd"><DomainName>XXXXXXXXX.co.za</DomainName><Action>Suspend</Action><ActionType>Organisation</ActionType><InternalReference>1234</InternalReference><StatusInfo><Status>Error</Status><Error><Field> (Validate 1.0.0.0): DomainName</Field><ErrorMessage>The domain is already suspended</ErrorMessage></Error></StatusInfo></Organisation></Organisations>statustruestatusMessagetaskStartIda0c5ce73-1915-4695-a50c-f05b431f8a14" 

您会注意到 XmlOut 后跟 XML 字符串,然后是一些以 statustruestatusMessage 开头的文本。

该响应实际上是一组 anyTypes。第一个是“XmlOut”,第二个是所有的 XML 外观字符串,然后是“status”、“true”、“statusMessage”、“”、“taskStartId”、“0c5ce73-1915-4695-a50c-f05b431f8a14”

我正在尝试获取以下值:

  • ErrorMessage(即“域已暂停”)
  • 状态(上例中为真)

【问题讨论】:

  • 您应该备份您正在使用的代码。我不记得那是什么了。该字符串绝对是无效的 XML,这就是 simplexml_load_string 返回 false 的原因(这就是它在失败时所做的)
  • 会的。刚到办公室。

标签: php simplexml


【解决方案1】:

假设您使用的是 PHP 的 SoapClient 类,您不需要/不能将响应加载为字符串。

只需使用 $response 变量。它已经是一个 PHP 对象了。

试试

var_dump($response);

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多