C# 用c发送SOAP请求#

C# 用c发送SOAP请求#,c#,web-services,soap,c#-3.0,variable-initialization,C#,Web Services,Soap,C# 3.0,Variable Initialization,我正在尝试向第三方web服务发送SOAP请求。我已成功地从同一服务中的其他接口发送和接收数据,但我遇到了以下问题: <SP_GoodsMovement xmlns="http://services.hnseu.com"> <GoodsMoved xmlns="http://tempuri.org/SP_GoodsMoved.xsd"> <SerialNumberedGoodsMovements> <SerialNumbered&g

我正在尝试向第三方web服务发送SOAP请求。我已成功地从同一服务中的其他接口发送和接收数据,但我遇到了以下问题:

<SP_GoodsMovement xmlns="http://services.hnseu.com">
  <GoodsMoved xmlns="http://tempuri.org/SP_GoodsMoved.xsd">
    <SerialNumberedGoodsMovements>
      <SerialNumbered>
        <PartNumber>string</PartNumber>
        <SerialNumber>string</SerialNumber>
        <MovementType>string</MovementType>
        <FromLocation>string</FromLocation>
        <FromLocationCategory>string</FromLocationCategory>
        <ToLocation>string</ToLocation>
        <ToLocationCategory>string</ToLocationCategory>
        <AssetMovementTimestamp>dateTime</AssetMovementTimestamp>
        <GoodsInReference>string</GoodsInReference>
      </SerialNumbered>
      <SerialNumbered>
        <PartNumber>string</PartNumber>
        <SerialNumber>string</SerialNumber>
        <MovementType>string</MovementType>
        <FromLocation>string</FromLocation>
        <FromLocationCategory>string</FromLocationCategory>
        <ToLocation>string</ToLocation>
        <ToLocationCategory>string</ToLocationCategory>
        <AssetMovementTimestamp>dateTime</AssetMovementTimestamp>
        <GoodsInReference>string</GoodsInReference>
      </SerialNumbered>
    </SerialNumberedGoodsMovements>
    <NonSerialNumberedGoodsMovements>
      <NonSerialNumbered>
        <PartNumber>string</PartNumber>
        <Quantity>unsignedInt</Quantity>
        <MovementType>string</MovementType>
        <FromLocation>string</FromLocation>
        <FromLocationCategory>string</FromLocationCategory>
        <ToLocation>string</ToLocation>
        <ToLocationCategory>string</ToLocationCategory>
        <Used>boolean</Used>
        <AssetMovementTimestamp>dateTime</AssetMovementTimestamp>
        <GoodsInReference>string</GoodsInReference>
      </NonSerialNumbered>
      <NonSerialNumbered>
        <PartNumber>string</PartNumber>
        <Quantity>unsignedInt</Quantity>
        <MovementType>string</MovementType>
        <FromLocation>string</FromLocation>
        <FromLocationCategory>string</FromLocationCategory>
        <ToLocation>string</ToLocation>
        <ToLocationCategory>string</ToLocationCategory>
        <Used>boolean</Used>
        <AssetMovementTimestamp>dateTime</AssetMovementTimestamp>
        <GoodsInReference>string</GoodsInReference>
      </NonSerialNumbered>
    </NonSerialNumberedGoodsMovements>
  </GoodsMoved>
</SP_GoodsMovement>
当我运行此代码时,会出现“对象引用未设置为对象实例”错误

我想我没有正确地引用PartNumber参数,但是我尝试了一些没有成功的方法

有什么想法吗

   SOAP_GoodsMoved.SerialNumberedGoodsMovements[0]
似乎没有初始化

也许试试

   GoodsMoved SOAP_GoodsMoved = new GoodsMoved();
   SOAP_GoodsMoved.SerialNumberedGoodsMovements = new WhateverObject[1];
   SOAP_GoodsMoved.SerialNumberedGoodsMovements[0] = new WhateverObject();
   SOAP_GoodsMoved.SerialNumberedGoodsMovements[0].PartNumber = partNumber[0].InnerXml;

或者,您可以为GoodsMoved()构造函数设置一个重载,以确保SerialNumberedGoodsMovements数组以一定的大小初始化。

谢谢您的帮助。我学习c#才两周,我没想到SerialNumberedGoodsMovement数组需要单独初始化。。。
   GoodsMoved SOAP_GoodsMoved = new GoodsMoved();
   SOAP_GoodsMoved.SerialNumberedGoodsMovements = new WhateverObject[1];
   SOAP_GoodsMoved.SerialNumberedGoodsMovements[0] = new WhateverObject();
   SOAP_GoodsMoved.SerialNumberedGoodsMovements[0].PartNumber = partNumber[0].InnerXml;