2009-04-16 20 views
0

で送信しています。サードパーティWebサービスにSOAPリクエストを送信しようとしています。私は正常に送信し、同じサービスで他のインタフェースからデータを受信しましたが、私は、この特定の一つの問題を抱えている:SOAPリクエストをc#

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

次のように私のコードがある(必要に応じて[私はこれを拡張することができます):

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

か、SerialNumberedGoodsMovements配列が特定のサイズで初期化されることを保証し、あなたのGoodsMoved()ctorのために過負荷を右可能性を試してみてください。

+0

ありがとうございました。私はC#を学ぶのに2週間しかかからず、SerialNumberedGoodsMovement配列を個別に初期化する必要があるとは思わなかったでしょう... –