簡體   English   中英

Soap Request中缺少復雜類型的參數

[英]Parameters in complex type missing from Soap Request

我有一個非常奇怪的錯誤,我試圖對其進行跟蹤。 在我的代碼中,我正在調用一個基本的Web服務。 我在復雜類型中看到某些參數的問題根本就沒有設置,即使我靜態設置它們也是如此。

在調試代碼時,我已經驗證了對象的屬性是否已正確設置,只有在生成soap請求時才會出現此問題。 我通過使用.net中的內置Web服務代理生成soap請求(在visual studio中添加Webservice Reference)

非常感謝任何幫助。

未在復雜類型OrderTransaction中設置的元素是:tracerId orderDate updateTime

這是我所看到的一個例子:

我靜態創建對象

orderArray[0] = new OrderTransaction();

然后我填充此對象中的參數

orderArray[0].tracerId = 47;

當我調用我的Web服務時,復雜類型中完全沒有這個參數。

這是我的復雜類型xsd的示例

<xs:complexType name="OrderTransaction">
<xs:sequence>
  <xs:element minOccurs="0" name="cardType" type="xs:string" />
  <xs:element name="ccEncryptedFlag" type="xs:short" />
  <xs:element minOccurs="0" name="chainShortcode" type="xs:string" />
  <xs:element minOccurs="0" name="channelCode" type="xs:string" />
  <xs:element minOccurs="0" name="creditCardNumber" type="xs:string" />
  <xs:element minOccurs="0" name="custIdMigratedToRex" type="xs:dateTime" />
  <xs:element minOccurs="0" name="customerId" type="xs:long" />
  <xs:element minOccurs="0" name="customerName" type="xs:string" />
  <xs:element minOccurs="0" name="expirationMonth" type="xs:string" />
  <xs:element minOccurs="0" name="expirationYear" type="xs:string" />
  <xs:element minOccurs="0" name="orderDate" type="xs:dateTime" />
  <xs:element name="orderId" type="xs:long" />
  <xs:element minOccurs="0" name="provinceCode" type="xs:string" />
  <xs:element name="totalItemTransactions" type="xs:short" />
  <xs:element minOccurs="0" name="tracerId" type="xs:long" />
  <xs:element minOccurs="0" name="updateTime" type="xs:dateTime" />
</xs:sequence>

這是我當前的測試代碼:

ZBatch_PublisherService.ItemTransaction[] itemArray = new ItemTransaction[1];
ZBatch_PublisherService.OrderTransaction[] orderArray = new OrderTransaction[1];
itemArray[0] = new ItemTransaction();
itemArray[0].classId = 1153;
itemArray[0].fulfillmentCenterId = 123;
itemArray[0].fulfillmentType = "TEST";
itemArray[0].lineItemId = 597;
itemArray[0].migratedFlag = 0;
itemArray[0].taxAmount = Convert.ToDecimal("7.00");
itemArray[0].sku = "110853852";
itemArray[0].quantity = 1;
itemArray[0].taxService = "CSS";
itemArray[0].totalShippingAmount = Convert.ToDecimal("5.99");
itemArray[0].tracerId = 47;
itemArray[0].trackingNo = "abc2134";
itemArray[0].unitAmount = Convert.ToDecimal("79.99");
itemArray[0].updateTime = Convert.ToDateTime("2011-10-27T17:47:30");
orderArray[0] = new OrderTransaction();
orderArray[0].tracerId = 47;
orderArray[0].customerId = 15;
orderArray[0].cardType = "VISA";
orderArray[0].ccEncryptedFlag = 3;
orderArray[0].chainShortcode = "ABC";
orderArray[0].creditCardNumber = "1234566788";
orderArray[0].customerName = "John Doe";
orderArray[0].expirationMonth = "APR";
orderArray[0].expirationYear = "2014";
orderArray[0].orderDate = Convert.ToDateTime("2011-10-27T17:47:30");
orderArray[0].orderId = 343;
orderArray[0].provinceCode = "AB";
orderArray[0].totalItemTransactions = 1;
orderArray[0].updateTime = Convert.ToDateTime("2011-10-27T17:47:30");
ZBatch_PublisherService.ZBatchPublisherServiceService ws = new ZBatchPublisherServiceService();
ws.saveBatch(orderArray, itemArray);

我遇到了同樣的問題,發現問題是某些類型不能為空。 因此,為了判斷它是否實際為空,C#Web服務有一個額外的標志,其變量名稱附加了“指定”一詞。 即traceIdSpecified = true;

除了設置屬性的值外,還必須將“ ... Specified”屬性設置為true。

這解決了我的問題。

心連心

fdlane

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM