【问题标题】:No matching ExtType found找不到匹配的 ExtType
【发布时间】:2015-05-07 07:33:55
【问题描述】:

我通过 PHP 和 SOAP 连接到 Microsoft .NET Web 服务。有人告诉我这是一个“网络服务”,所以我的印象是它的行为应该像我过去使用过的其他 954 个“网络服务”。

不涉及参数的调用似乎可以正常工作。例如,

$client->GetContactsDataTableXMLSchema();

结果是您可能期望的,一个联系人表的 XML 模式。没有问题。

然而,

每当我尝试进行涉及参数的调用时,一切都会崩溃,而我得到的只是错误:

No matching ExtType found

这是一个标准的 MS .NET 错误吗?这是我在 PHP Soap 中做错的事情吗?我不能真正分享肥皂端点,因为它与 WSDL 一样是私有/机密的。

这是我正在调用的函数:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <FetchDIASContact xmlns="http://www.cac.be/">
      <applicationName>string</applicationName>
      <workspace>string</workspace>
      <addressTable>string</addressTable>
      <addressID>string</addressID>
    </FetchDIASContact>
  </soap:Body>
</soap:Envelope>

我是这样称呼它的。

$client->FetchDIASContact( 'MyVastiauWebApplication' , '100' , 'Client' , '987654321' );

前 3 个参数是作为 web 服务制造商提供给我的,并在他们制作的 C# 示例中定义。最后一个参数是我们想要获取的客户端,它们在他们提供的 Visual Studio C# 示例应用程序中工作。

最后,

当实际读取和解码结果中的数据返回结果时,我是否还有机会?

我有一种不好的感觉,结果将是一个必须从字节流中解码的 MS .NET 数据表。

这是我将得到的结果。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <FetchDIASContactResponse xmlns="http://www.cac.be/">
      <FetchDIASContactResult>string</FetchDIASContactResult>
      <addressesDT>base64Binary</addressesDT>
      <fieldsDT>base64Binary</fieldsDT>
      <linksDT>base64Binary</linksDT>
    </FetchDIASContactResponse>
  </soap:Body>
</soap:Envelope>

【问题讨论】:

    标签: c# php .net web-services soap


    【解决方案1】:

    好的,

    在撞了头撞墙后,我发现了,我与你分享,如果你有同样的问题,你知道该怎么做。

    一些 web 服务要求在调用函数时将参数包装到关联数组中。

    很多webservices只是让你正常把参数放到调用中。这是有效的,参数是键值数组。

    $client->FetchDiasContactV5( array(
        'applicationName' => 'MyVastiauWebApplication' ,
        'workspace' => '100' ,
        'addressTable' => 'Client' ,
        'addressID' => '987654321' ) );
    

    这样调用函数:

    $client->FetchDIASContact( 'MyVastiauWebApplication' , '100' , 'Client' , '987654321' );
    

    没有用,但是我确信在我连接到的其他网络服务中确实可以...没什么大不了的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 2018-12-16
      • 1970-01-01
      • 2017-10-28
      • 2019-12-01
      • 1970-01-01
      • 2021-03-29
      • 2017-08-16
      相关资源
      最近更新 更多