1

我正在使用 PHP 连接到Web 服务

我需要使用一些登录详细信息连接到 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'));

在响应肥皂标题中,将生成一张票。这是在 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 访问票证的最佳方式发生这种情况的帮助!

4

1 回答 1

1

根据手册

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

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

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

  • 查看PHP页面的源码
  • echo将语句包装在<xmp></xmp>标签中。
  • 在回显之前在 XML 上调用htmlentities() 。
于 2012-09-18T14:58:17.603 回答