问题从VB .NET
填充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服务更新的项目。 我能做些什么。
- 凭据传递OK
- 通行证更新请求,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相当新的代码,所以如果一些相关的信息丢失,请询问。
感谢自带
此代码的任何帮助:
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
鉴于元素(选项),这是可能的,它是一个数组,而不是单一实例的命名,但是这应该指向你在正确的方向。
<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
您需要将'Options'对象分配给父对象,如下所示:'Update.Options = Options'。否则,即使创建了“选项”对象并填充它,它也不会通过网络发送,因为它不包含在父对象中。 – Tim 2014-10-29 06:58:30