2014-10-29 39 views
1

填充SOAP更新我有問題從VB .NET

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="https://XXXXXX"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ns:UpdateRequest> 
     <ns:ID>112</ns:ID> 
     <ns:UpdateUsername>Testing User</ns:UpdateUsername> 
     <ns:UpdateTime>2014-01-01T14:01:59.123</ns:UpdateTime> 
     <!--1 to 100 repetitions:--> 
     <ns:Option> 
      <ns:UpdateID>1234</ns:UpdateID> 
      <ns:OptionID>1</ns:OptionID> 
      <ns:Status>Progress</ns:Status> 
      <ns:EndDate>2015-01-01T14:01:59.123</ns:EndDate> 
     </ns:Option> 
     </ns:UpdateRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

我從WDSL和XSD文件創建的VB類問題灌裝Web服務更新的項目。 我能做些什麼。

  1. 憑據傳遞OK
  2. 通行證更新請求,Web服務記錄與測試用戶已經更新(didnt包括填充從選項命名空間數據)

我需要填補這一選項部分的幫助。我試過的代碼如下

Dim Update As New CustomNamespace.UpdateRequestType 
      CustomNamespace.ID = "112" 
      CustomNamespace.UpdateUsername = "Testing User" 
      CustomNamespace.UpdateTime = "2014-01-01T14:01:59.123" 

      Using New System.ServiceModel.OperationContextScope(CustomNamespace) 
       Dim Options As New CustomNamespace.OptionType 
       Options.UpdateID= "1234" 
       Options.EndDate = "2015-01-01T14:01:59.123" 
       Options.Status = "Progress" 
       Options.OptionID = "1" 
      End Using 

這沒有工作。

所有這樣tryed無出使用發送upodate的命令,但已填充wasent的選項。 像這樣:

Dim Update As New CustomNamespace.UpdateRequestType 
      CustomNamespace.ID = "112" 
      CustomNamespace.UpdateUsername = "Testing User" 
      CustomNamespace.UpdateTime = "2014-01-01T14:01:59.123" 
Dim Options As New CustomNamespace.OptionType 
      Options.UpdateID= "1234" 
      Options.EndDate = "2015-01-01T14:01:59.123" 
      Options.Status = "Progress" 
      Options.OptionID = "1" 

Im相當新的代碼,所以如果一些相關的信息丟失,請詢問。

感謝自帶

+0

您需要將'Options'對象分配給父對象,如下所示:'Update.Options = Options'。否則,即使創建了「選項」對象並填充它,它也不會通過網絡發送,因爲它不包含在父對象中。 – Tim 2014-10-29 06:58:30

回答

0

此代碼的任何幫助:

Dim Options As New CustomNamespace.OptionType 
Options.UpdateID= "1234" 
Options.EndDate = "2015-01-01T14:01:59.123" 
Options.Status = "Progress" 
Options.OptionID = "1" 

創建CustomNamespace.OptionType類的新實例,但它有父CustomNamespace.UpdateRequestType類沒有關係。 CustomNamespace.UpdateRequestType類是您通過服務發送的內容,因此您需要將CustomNamespace.OptionType分配給父級,以便將其包含在發送的內容中。

在沒有看到WSDL或XSD文件,最有可能的(基於消息的格式),我預計CustomNamespace.UpdateRequestType類有一個屬性是這樣的:

Public Option As CustomNamespace.OptionType 

也就是說你會想物業將選項類的實例分配給。您創建的CustomNamespace.OptionType一個實例後,您這樣做:

Update.Options = Option 

鑑於元素(選項),這是可能的,它是一個數組,而不是單一實例的命名,但是這應該指向你在正確的方向。

0
<xsd:element type="tns:UpdateRequestType" name="UpdateRequest"/> 
<xsd:element type="tns:UpdateResponseType" name="UpdateResponse"/> 
<xsd:element type="xsd:string" name="UpdateFault"/> 
<xsd:element type="tns:OptionType" name="Option"/> 
-<xsd:complexType name="UpdateRequestType"> 
-<xsd:sequence> 
<xsd:element type="xsd:int" name="CustomerID"/> 
<xsd:element type="xsd:string" name="UpdateUsername"/> 
+<xsd:element type="xsd:string" name="UpdateTime"> 
<xsd:element maxOccurs="100" minOccurs="1" ref="tns:Option"/> 
</xsd:sequence> 
</xsd:complexType> 
+<xsd:complexType name="UpdateResponseType"> 
-<xsd:complexType name="OptionType"> 
-<xsd:sequence> 
<xsd:element type="xsd:int" name="UpdateID"/> 
<xsd:element type="xsd:int" name="OptionID"/> 
<xsd:element type="xsd:int" name="Status"/> 
-<xsd:element type="xsd:string" name="EndDate"> 
-<xsd:annotation> 
<xsd:documentation>Date format YYYY-MM-DD</xsd:documentation> 
</xsd:annotation> 
</xsd:element> 
</xsd:sequence> 
</xsd:complexType> 

這是xsd文件中的代碼。該選項的字段最多可以顯示100次,因此它是一個數組? 當我嘗試把這個字段像這樣 CustomNamespace.EndingOption =選項 它給出錯誤類型'CustomNamespace.OptionType'的值無法轉換爲'CustomNamespace.OptionType'的一維數組' 是那個Dim Options As新的CustomNamespace.OptionType行錯誤,應該有()數組或什麼。 課堂已經從文件創建具有這些領域如下

類:UpdateRequestType

Private OptionField() As OptionType 

有一切讓自己的類

'''<remarks/> 
     <System.Xml.Serialization.XmlElementAttribute("Option")> _ 
     Public Property Option() As OptionType() 
      Get 
       Return Me.OptionField 
      End Get 
      Set 
       Me.OptionField = value 
      End Set 
     End Property 
    End Class