繁体   English   中英

从ASP.NET C#app中使用PHP Web服务(SOAP,WSDL) - 数组问题

[英]Consuming PHP webservice(SOAP, WSDL) from ASP.NET C# app - problems with array

我有一个Web服务,定义(WSDL)并在PHP中实现。 这个是相对简单的,重要的位定义如下:

<message name='registerAccountRequest'>
        <part name='key' type='xsd:string'/> <!-- key -->
        <part name='data' type='xsd:array'/> <!-- account data -->
</message>
<message name='registerAccountResponse'>
        <part name='success' type='xsd:string' />
</message>

请注意,data参数是一个数组,实际上它是一个关联数组。 PHP客户端可以很好地工作,调用服务并获得适当的响应。

现在,当我尝试使用ASP.NET使用此服务时...我将如何用作关联数组? Hashtable?由Visual Studio创建的代理类表示第二个参数实际上是一个字符串(或应该是字符串)而不是任何类型的集合...

相当令人费解......

附录:我尝试抓取PHP生成的SOAP请求,这里有一个带有'data'参数的部分:

...<data xsi:type="ns2:Map">
     <item>
       <key xsi:type="xsd:string">company_data</key>
       <value xsi:type="ns2:Map">
         <item>
           <key xsi:type="xsd:string">name</key>
           <value xsi:type="xsd:string">Test company name</value>
         </item>
         <item>
           <key xsi:type="xsd:string">slogan</key>
           <value xsi:type="xsd:string">Test company slogan</value>
         </item>

...那么ns2:Map是什么数据类型? ASP.NET支持哪些内容可以干净地映射到它上面?

我遇到了同样的问题。 我用PHP创建了一个Web服务,并尝试使用ASP.NET。 制作一个ASP.NET可以理解的关联数组变得非常困难。 最后,我们决定放弃关联数组以支持对象。

    <definitions
       ...
       xmlns:myNameSpace="http://myServer.com/mySoapService/files/schema">



    <types>
      <schema xmlns="http://www.w3.org/2001/XMLSchema"
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
          targetNamespace="http://myServer.com/mySoapService/files/schema"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">


      <complexType name="ViewCustomer_Object">
        <sequence>
            <element minOccurs="0" name="customer" type="string" />
            <element minOccurs="0" name="password" type="string" />
            <element minOccurs="0" name="first_name" type="string" />
        </sequence>
      </complexType>
    </schema>
  </types> 

   ...

    <message name="view_customer_response">
        <part name="return" type="myNameSpace:ViewCustomer_Object" />
    </message>



    ...

    </definitions>

对象的元素是公共属性。 有些人甚至认为像这样的对象和散列表一样好。 祝好运。

Hashtable是PHP关联数组的最精确近似值...但是,关联数组的“正常”使用的最佳比较是Dictionary<string, object>或者甚至是Dictionary<string, string> (取决于你的数据实际上是什么)。

Hashtable可以很好地适应该地图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM