c# - 找不到匹配的 ExtType

标签 c# php .net web-services soap

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

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

$client->GetContactsDataTableXMLSchema();

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

但是,

每当我尝试进行涉及参数的调用时,所有的事情都会崩溃,我得到的只是错误:

No matching ExtType found

这是标准的 MS .NET 错误吗?这是我在 PHP Soap 中做错了什么吗?我不能真正分享 soap 端点,因为它与 WSDL 一起是私有(private)/ secret 的。

这是我调用的函数:

<?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 dataTable。

这是我将在它正常工作时得到的结果。

<?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>

最佳答案

好的,

在撞到我的头和撞墙之后,这是我发现的,我与你分享,所以如果你有同样的问题,你知道该怎么做。

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

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

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

像这样调用函数:

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

没有用,但是我确信在我连接到它的其他 Web 服务中确实有用......我们继续前进没什么大不了的。

关于c# - 找不到匹配的 ExtType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094629/

相关文章:

.net - 在括号中格式化负数但不使用 $ 符号?

c# - 如何将 UTF-8 byte[] 转换为字符串

c# - 使用自定义参数取消订阅/删除事件处理程序

java - 数据源模式 - 在哪里放置表级方法?

php - fatal error : Call to a member function prepare() on a non-object in

php - 使用php将csv上传到windows azure存储

c# 对 javascript 函数的多次调用不起作用

c# - 什么是#date# 以及如何转换为 C#?

php - 从 url 中剥离路径 - 没有内置函数?

c# - Intellitrace 和 Windows 服务