从ASP.NET C#应用程序消耗PHP Web服务(SOAP,WSDL) - 与数组的问题 [英] Consuming PHP webservice(SOAP, WSDL) from ASP.NET C# app - problems with array

查看:141
本文介绍了从ASP.NET C#应用程序消耗PHP Web服务(SOAP,WSDL) - 与数组的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Web服务定义(WSDL)和PHP实现。这一个是比较简单的,重要的位定义如下:

I have a web service, defined(WSDL) and implemented in PHP. This one is relatively simple, important bits defined as the following:

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

请注意该数据参数是一个数组,实际上它是一个关联数组。
PHP客户端精美作品与此,调用服务和得到适当的回应。

Note that data parameter is an array, in fact it is an associative array. PHP client works beautifully with this, calling service and getting proper response.

现在,当我尝试使用与ASP.NET这项服务......我该怎么作为一个关联数组使用? Visual Studio创建Hashtable的?.. Proxy类说,第二个参数实际上是一个串(或者应该是字符串),而不是任何类型的集合...

Now, when I try to consume this service with ASP.NET... what do I use as an associative array? Hashtable?.. Proxy class created by Visual Studio says that second parameter is actually a string(or should be string) and not any type of collection...

颇令人费解...

附录:
我试图抓住了PHP生成SOAP请求,这里是执行数据参数的一部分:

Addendum: I tried grabbing SOAP request that PHP generates, here is a part of it that carries 'data' parameter:

...<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:地图是什么?是否有一些ASP.NET支持映射到它干净?

... So what data type that ns2:Map is? Is there something that ASP.NET supports that maps onto it cleanly?

推荐答案

我遇到了同样的问题。我已经创造了PHP的Web服务,并试图用ASP.NET来使用它。制作一个关联数组ASP.NET能明白原来是艰难的。最后,我们决定放弃支持对象的关联数组。

I ran into the same problem. I'd created a web service in PHP and tried to consume it with ASP.NET. Making an associative array that ASP.NET could understand turned out to be tough. In the end, we decided to forgo the associative array in favor of an object.

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

对象的要素是公共属性。有些人甚至认为,像这样的对象只是一个哈希表一样好。祝你好运。

The elements of the object are public properties. Some might even argue that an object like this is just as good as a hashtable. Good luck.

这篇关于从ASP.NET C#应用程序消耗PHP Web服务(SOAP,WSDL) - 与数组的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆