У меня следующая проблема:
Я пишу код клиента для использования веб-службы.Вот ответ от веб-службы:
HTTP/1.0 200 OK
Content-Type: text/xml; charset=utf-8
Connection: close
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<conc:GetProductsListResponse xmlns:conc="http://tempuri.org/XMLSchema.xsd">
<conc:Result>
<conc:Products>
<conc:Product conc:ProductID="4C475A0126111982" conc:GroupID="Default" />
</conc:Products>
</conc:Result>
</conc:GetProductsListResponse>
</soap:Body>
</soap:Envelope>
Вот определение из файлов .xsd и .wsdl, которое работает с этим:
<xs:element name="GetProductsListResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="Result">
<xs:complexType>
<xs:sequence>
<xs:element name="Products" type="ProductsType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="ProductsType">
<xs:choice>
<xs:element name="Product" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="ProductID" type="xs:string"/>
<xs:attribute name="GroupID" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Error">
<xs:complexType>
<xs:attribute name="ErrorID" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
Я использовал Добавить веб-ссылку надобавить ссылку.Я использовал веб-службы в стиле .NET 2.0.
Вот сгенерированные прокси-классы:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4927")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://tempuri.org/XMLSchema.xsd")]
public partial class GetProductsListResponse {
private GetProductsListResponseResult resultField;
/// <remarks/>
public GetProductsListResponseResult Result {
get {
return this.resultField;
}
set {
this.resultField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4927")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://tempuri.org/XMLSchema.xsd")]
public partial class GetProductsListResponseResult {
private ProductsType productsField;
/// <remarks/>
public ProductsType Products {
get {
return this.productsField;
}
set {
this.productsField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4927")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/XMLSchema.xsd")]
public partial class ProductsType {
private ProductsTypeProduct[] itemsField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("Product")]
public ProductsTypeProduct[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4927")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://tempuri.org/XMLSchema.xsd")]
public partial class ProductsTypeProduct {
private string productIDField;
private string groupIDField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string ProductID {
get {
return this.productIDField;
}
set {
this.productIDField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string GroupID {
get {
return this.groupIDField;
}
set {
this.groupIDField = value;
}
}
}
Проблема заключается в том, что, когда веб-служба десериализуется, ProductID и GroupID не десериализуются(по какой-то причине они оставлены равными нулю).