2009-04-16 303 views
0

我正在尝试向第三方web服务发送SOAP请求。我已经成功地发送和相同的服务收到来自其他接口的数据,但我有问题,这个特别的一个:用c发送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> 

所以我的代码如下(我可以扩大这一点,如果necesssary):

... 
if (requestType == "SP_GoodsMovement") 
{ 
    GoodsMoved SOAP_GoodsMoved = new GoodsMoved(); 
    SOAP_GoodsMoved.SerialNumberedGoodsMovements[0].PartNumber = partNumber[0].InnerXml; 
... 
    string SOAPMessage; 
    SOAPMessage = request.SP_GoodsMovement(header, SOAP_GoodsMoved).Message; 
} 

当我运行此代码时,出现'对象引用未设置为对象的实例'错误。

我想我没有正确引用PartNumber参数,但我已经尝试了几件没有成功的事情。

任何想法?

回答

0
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数组被具有一定规模初始化。

+0

谢谢你的工作。我只有2周的时间学习c#,我不会猜测SerialNumberedGoodsMovement数组需要分别初始化...... – 2009-04-16 09:07:44