2009-04-16 218 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