簡體   English   中英

在C#中使用復雜類型調用SOAP API

[英]Calling SOAP API with Complex Type in C#

我是.Net的新手,所以如果我的問題的定義不正確,我會提前道歉。

我正在嘗試使用SOAP Web服務,並且在為稱為deliveryRoutingRequestEntries的元素構造復雜類型時遇到問題。

我已經使用服務參考添加了WSDL,這是WSDL的一部分:

<wsdl:operation name="validateDeliveryAddress">
  <soap:operation soapAction="" style="document" />
  <wsdl:input name="validateDeliveryAddress">
    <soap:body use="literal" />
  </wsdl:input>
  <wsdl:output name="validateDeliveryAddressResponse">
    <soap:body use="literal" />
  </wsdl:output>
</wsdl:operation>

  <xs:complexType name="deliveryRoutingRequestEntries">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="deliveryRoutingRequestEntry" type="tns:delRoutingRequestEntry" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="delRoutingRequestEntry">
    <xs:sequence>
      <xs:element minOccurs="0" name="addressValidationRequired" type="xs:boolean" />
      <xs:element name="customer" type="tns:customer" />
      <xs:element name="parcel" type="tns:parcel" />
      <xs:element minOccurs="0" name="services" type="tns:services" />
      <xs:element minOccurs="0" name="senderAddress" type="tns:senderAddress" />
      <xs:element minOccurs="0" name="productCode" type="xs:decimal" />
      <xs:element name="expectedDespatchDate" type="xs:date" />
      <xs:element minOccurs="0" name="requiredDate" type="xs:date" />
      <xs:element minOccurs="0" name="countryOfOrigin" type="xs:string" />
      <xs:element minOccurs="0" name="warehouseNo" type="xs:decimal" />
      <xs:element minOccurs="0" name="carrierCode" type="xs:string" />
      <xs:element minOccurs="0" name="deliveryMethod" type="xs:string" />
      <xs:element minOccurs="0" name="multiplePartsId" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

這是我嘗試調用validateDeliveryAddress的嘗試:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HermesWebService;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        RoutingWebServiceClient objHermesWebService = new RoutingWebServiceClient();
        objHermesWebService.ClientCredentials.UserName.UserName = "abababab";
        objHermesWebService.ClientCredentials.UserName.Password = "abababab";

        deliveryRoutingRequest objRoutingRequest = new deliveryRoutingRequest();
        objRoutingRequest.clientId = "ABAB";
        objRoutingRequest.clientName = "ABAB";
        objRoutingRequest.userId = "ABABAB";
        objRoutingRequest.sourceOfRequest = "ABABAB";

        delRoutingRequestEntry objReqEntry = new delRoutingRequestEntry();

        customer objCust = new customer();
        objCust.customerReference1 = "12345";

        address objadr = new address();
        objadr.streetName = "7 Bridge Street";
        objadr.addressLine1 = "London Heathrow Airport";
        objadr.city = "London";
        objadr.region = "Hounslow";
        objadr.postCode = "ABA ABA";
        objadr.countryCode = "GB";

        parcel objpcl = new parcel();
        objpcl.weight = 100;
        objpcl.length = 0;
        objpcl.width = 0;
        objpcl.depth = 0;
        objpcl.girth = 0;
        objpcl.combinedDimension = 0;

        objCust.address = objadr;
        objReqEntry.customer = objCust;
        objReqEntry.parcel = objpcl;

        objRoutingRequest.deliveryRoutingRequestEntries = objReqEntry; (I receive an error here stating: Cannot implicitly convert type 'HermesWebService.delRoutingRequestEntry' to 'HermesWebService.delRoutingRequestEntry[]')

        var x = objHermesWebService.validateDeliveryAddress(objRoutingRequest);

    }
}

我遇到的問題是我無法將“客戶”,“地址”和“包裹”添加到objRoutingRequest中,因此可以將其包含在請求中。

希望這有道理,讓我知道是否需要其他信息。

(只需將答案移到這里:)
您在以下位置出錯: objRoutingRequest.deliveryRoutingRequestEntries = objReqEntry;
您應該將其作為數組傳遞:
objRoutingRequest.deliveryRoutingRequestEntries = new [] {objReqEntry};

暫無
暫無

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

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