ASP.NET C # uygulaması PHP webservice (SOAP, WSDL) tüketen - dizi ile ilgili sorunlar

2 Cevap php

Ben tanımlanan bir web hizmeti, (WSDL) ve PHP uygulanmaktadır. Bu da, aşağıdaki gibi tanımlanmıştır, nispeten basit, önemli bittir:

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

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 ile bu hizmeti tüketmeye çalışın Şimdi, ... ne bir ilişkisel dizi olarak kullanabilirim? Hashtable? .. Visual Studio tarafından oluşturulan Proxy sınıfı ikinci parametre aslında bir dize (veya dize olmalı) değil, koleksiyon herhangi bir tür olduğunu söylüyor ...

Oldukça şaşırtıcı ...

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>

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

2 Cevap

Ben aynı sorun koştu. PHP bir web hizmeti oluşturmuş ve ASP.NET ile tüketmek için çalışmıştı. ASP.NET zor olduğu ortaya çıktı anlayabileceği bir ilişkisel dizi yapma. Sonunda, biz bir nesnenin lehine ilişkisel dizi bırakmak için karar verdi.

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

Nesnenin elemanlar ortak özelliklerdir. Hatta bazıları böyle bir nesne, bir Hashtable gibi iyi olduğunu iddia edebilir. İyi şanslar.

Hashtable PHP birleşmeli dizinin en doğru yaklaşım olacaktır ... Ancak, bir ilişkisel dizi 'normal' kullanımı için en iyi karşılaştırma Dictionary<string, object> olacaktır ya da belki hatta {[ (2)]} (veri aslında ne bağlı olarak).

A Hashtable güzel o haritayı uyabilecek.