首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Axis2使用.net .net服务

从Axis2使用.net .net服务
EN

Stack Overflow用户
提问于 2014-02-24 12:31:34
回答 2查看 1.3K关注 0票数 0

在我的axis2应用程序上为.net web服务创建了一个新的web服务客户端。调用一些webservice方法。.Net正在调用webservice并读取xml响应,但不能反序列化它。生成的代理代码通常用于.net,它是ok的。wsdl通过wsi遵从性。

使用wireshark,我看到xml响应非常正常。web服务通常响应请求,但xml数据似乎是错误的。让我展示同样的数据和合同。

xml响应:

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <ns:blablaResponse xmlns:ns="http://blabla">
      <ns:return type="blablaMessage" xmlns:ax274="http://blabla/xsd" xmlns:ax272="http://blabla/xsd" xmlns:ax271="http://blabla/xsd">
        <ax274:blablaNo>1</ax274:blablaNo>
        <ax274:blablaNo>2</ax274:blablaNo>
        <ax274:blablaNo>3</ax274:blablaNo>
        <ax274:blablaDescription>TEXT 1</ax274:blablaDescription>
        <ax274:blablaDescription>TEXT 2</ax274:blablaDescription>
        <ax274:blablaDescription>TEXT 3</ax274:blablaDescription>
        <ax274:statustype="blblaState">
          <ax272:textMessage/>
          <ax272:code>OK</ax272:code>
        </ax274:status>
      </ns:return>
    </ns:blablaResponse>
  </soapenv:Body>
</soapenv:Envelope>

自动生成的数据契约:

代码语言:javascript
复制
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="blablaResponse", [Namespace]:="http://blabla"), _
System.SerializableAttribute()> _
Partial Public Class blablaMessage
    Inherits Object
    Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged

    <System.NonSerializedAttribute()> _
    Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject

    Private blablaNoField As ServiceReference1.ArrayOf_xsd_int

    Private blablaDesriptionField As ServiceReference1.ArrayOf_xsd_string

    Private statusField As ServiceReference1.status

    <Global.System.ComponentModel.BrowsableAttribute(False)> _
    Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
        Get
            Return Me.extensionDataField
        End Get
        Set(value As System.Runtime.Serialization.ExtensionDataObject)
            Me.extensionDataField = value
        End Set
    End Property

    <System.Runtime.Serialization.DataMemberAttribute(IsRequired:=True)> _
    Public Property blablaNo() As ServiceReference1.ArrayOf_xsd_int
        Get
            Return Me.blablaNoField
        End Get
        Set(value As ServiceReference1.ArrayOf_xsd_int)
            If (Object.ReferenceEquals(Me.blablaNoField, value) <> True) Then
                Me.blablaNoField = value
                Me.RaisePropertyChanged("blablaNo")
            End If
        End Set
    End Property

    <System.Runtime.Serialization.DataMemberAttribute(IsRequired:=True)> _
    Public Property blablaDescription() As ServiceReference1.ArrayOf_xsd_string
        Get
            Return Me.blablaDesriptionField
        End Get
        Set(value As ServiceReference1.ArrayOf_xsd_string)
            If (Object.ReferenceEquals(Me.blablaDesriptionField, value) <> True) Then
                Me.blablaDesriptionField = value
                Me.RaisePropertyChanged("blablaDescription")
            End If
        End Set
    End Property

    <System.Runtime.Serialization.DataMemberAttribute(IsRequired:=True)> _
    Public Property status() As ServiceReference1.IslemSonucu
        Get
            Return Me.statusField
        End Get
        Set(value As ServiceReference1.IslemSonucu)
            If (Object.ReferenceEquals(Me.statusField, value) <> True) Then
                Me.statusField = value
                Me.RaisePropertyChanged("status")
            End If
        End Set
    End Property

    Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged

    Protected Sub RaisePropertyChanged(ByVal propertyName As String)
        Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
        If (Not (propertyChanged) Is Nothing) Then
            propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
        End If
    End Sub
End Class

使用一些不同的参数尝试了wsdl.exe svcutil.exe,但都失败了。对于axis2来说,这似乎是一个序列化问题,因为相同的xml父元素中有不同类型的元素。例如,blablaNo和blablaDescription。

我怎样才能解决这个问题。谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2014-03-01 14:12:22

publisher发送给新的wsdl文件,问题就解决了。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21987866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档