我正在通过 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/