【问题标题】:Get attribute from Soap Response Header in PHP从 PHP 中的 Soap 响应标头获取属性
【发布时间】:2012-09-18 14:44:07
【问题描述】:

我正在使用 PHP 连接到 Web Service

我需要使用一些登录详细信息连接到 Web 服务,以便生成票证以开始使用可用的方法。

这里有一些代码:

//Connect To WebCrm API
$client = new SoapClient("http://b2b-email.net/apicrm1/webCRMAPI.asmx?wsdl",    array('trace' => 1));

//Login
$ticket = $client->Authenticate(array('code' => 'rhgkhgk','user' =>'myusername','password' =>'apass'));

在响应soap标头中,将生成一张票。这是在 Ticket Header Then GUID 下生成的。 (见下文)

 <?xml version="1.0" encoding="utf-8"?>
     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Header>
         <TicketHeader xmlns="http://www.webcrm.com/">
             <Guid>TICKET->>>>>>>>e446373e-8fg0-4dfc-b876-41f3bc8990dd</Guid>
        </TicketHeader>
      </soap:Header>
       <soap:Body>
        <AuthenticateResponse xmlns="http://www.webcrm.com/">
          <AuthenticateResult>
        <Message />
        <Code>0</Code>
      </AuthenticateResult>
    </AuthenticateResponse>
  </soap:Body>
</soap:Envelope>

我需要此票证 ID 才能使用 Web 服务执行任何其他任务,但如何访问它并在我的代码中使用它?

我已经尝试使用以下:

$response = $client->__getLastResponse();

但是输出如下:

6d5933d3-46ff-4690-893d-2af04806668c->>>>>>>>0<<<<<ZERO ON THE END

一个零总是在不应该的时候?

非常感谢任何有关为什么以我可以实现从 Soap Header 访问票证的最佳方式发生这种情况的帮助!

【问题讨论】:

    标签: php soap service web header


    【解决方案1】:

    根据manual

    $soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers);
    

    $output_headers 应该包含响应消息的标头。

    $client-&gt;__getLastResponse() 返回最后一个响应的 XML。您正在浏览器中查看此内容,并且您的浏览器正在尝试将其解释为 HTML。因此,它不会显示任何 XML 标记,而只会显示文本。这就是显示 0 的原因。您可以通过多种方式查看整个 XML:

    • 查看PHP页面源码
    • echo 语句包装在&lt;xmp&gt;&lt;/xmp&gt; 标记中。
    • 在回显之前在 XML 上调用 htmlentities()

    【讨论】:

    • 好吧,我确实尝试过这个soap调用,但是我只是得到这个错误PHP致命错误:未捕获的SoapFault异常:[客户端]看起来我们没有XML文档这是造成的按行$client-&gt;__soapCall("Authenticate", array("gddfffdg","dfgdfgd","dggfdf"), null, $input_headers, &amp;$output_headers);
    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2017-03-27
    相关资源
    最近更新 更多