通过SOAP Web服务从C#到PHP的对象数组

时间:2013-07-12 09:27:28

标签: c# php .net soap

我正在创建一个小型Web服务,但是在将一组对象从C#应用程序发送到Web服务时遇到问题。我在C#中创建了一个具有不同属性的对象,其中一个属性是另一种类型的对象的数组。 C#方似乎工作正常,但在PHP方面,事情并没有成功。对象到达具有所有属性的服务,但该数组始终为空。

我在这里做错了什么?

我的WSDL中的类型

<types>
    <xsd:schema targetNamespace="http://localhost//soap/myService.wsdl">
      <xsd:complexType name="SubObject">
        <xsd:sequence>
          <xsd:element name="VAL1" type="xsd:integer" />
          <xsd:element name="VAL2" type="xsd:string" />
          <xsd:element name="VAL3" type="xsd:string" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    <xsd:schema targetNamespace="http://localhost/soap/myService.wsdl">
      <xsd:complexType name="TestObject">
        <xsd:sequence>
          <xsd:element name="PROP1" type="xsd:integer" />
          <xsd:element name="PROP2" type="xsd:string" />
          <xsd:element name="PROP3" type="xsd:string" />
          <xsd:element name="MyArray" type="tns:SubObject" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </types

我在C#中正在做什么:

MyService.Test_PortTypeClient client = new MyService.Test_PortTypeClient();
MyService.TestObject curObject = new MyService.TestObject();
curObject.PROP1= 12345;
curObject.PROP2= "test";
curObject.PROP3= "test";

curObject.MyArray = new MyService.SubObject[1];

curObject.MyArray[0] = new MyService.SubObject();
curObject.MyArray[0].VAL1 = 12345;
curObject.MyArray[0].VAL2 = "test";
curObject.MyArray[0].VAL2 = "test";

client.SaveObject(curObject);

来自C#应用程序的对象的print_r:

stdClass Object
(
    [PROP1] => 12345
    [PROP2] => "test"
    [MyArray] => stdClass Object
        (
        )

    [PROP3] => "test"
)

server.php

function SaveProduct($object) {
  // Save
}

ini_set("soap.wsdl_cache_enabled", "0");

$server = new SoapServer('myService.wsdl');

$server->addFunction("SaveObject");

$server->handle();

0 个答案:

没有答案