我在填写Web服务更新项时遇到问题
<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类。 我做了什么。
我需要帮助填写选项部分。我试过的代码如下
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
这没有用。
所有这样尝试使用发送upodate的使用命令,但那里已经填充的选项。 像这样:
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"
我对代码很新,所以如果缺少某些相关信息,请询问。
感谢您提供任何帮助
答案 0 :(得分: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
鉴于元素的命名(选项),它可能是一个数组而不是一个实例,但这应该指向正确的方向。
答案 1 :(得分: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的1维数组' 是Dim Options As New 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