200分吸引火力 关于web service生成wsdl

时间:2023-01-29 12:08:13
前提:
     项目中,客户的另一个系统需要和我们做web Service接口,他们给我们提供了web service的wsdl,要求各个其他系统编写web service给他们调用,语言不限。

问题:
     我根据wsdl生成了服务端框架后,并且实现了代码,他们java调用的时候报错,错误信息暂时没提供,但是其他系统以java的cxf框架来生成的就没问题。他们技术人员说,我们的web service的wsdl不符合他们要求。
但是他们给出了java不同框架wsdl有差距的解决方案。
他们给的解决方案是: 在发布web service的时候,指定wsdl文件位置到他们提供的wsdl文件,想java的cxf框架的话,可以wsdlLocation 


C#下面有没有类似的属性或者特性等设置可以实现的?或者有其他的解决方案没?
     

14 个解决方案

#1


又事C#和java对接!

不管他们,直接返回json给他们自己解析好了。不要管他们怎么说。

传输jsom或者xml是绝对规范的。

#2


以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。 200分吸引火力 关于web service生成wsdl



//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.269
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

// 
// 此源代码由 wsdl 自动生成, Version=4.0.30319.1。
// 


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
[System.Web.Services.WebServiceBindingAttribute(Name = "xxxxxx", Namespace = "http://soap.xxx.xxx.xxx.com")]
public interface xxxxx
{

    /// <remarks/>
    [System.Web.Services.WebMethodAttribute()]
    [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://soap.xxx.xxx.xxx.com", ResponseNamespace = "http://soap.bossagent.vac.unicom.com")]
    [return: System.Xml.Serialization.SoapElementAttribute("xxxx")]
    OrderRelationUpdateNotifyResponse orderRelationUpdateNotify(OrderRelationUpdateNotifyRequest orderRelationUpdateNotifyRequest);
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.SoapTypeAttribute(Namespace = "http://req.sync.soap.xxx.xxx.xxx.com")]
public partial class xxxxxxxx
{

    private string recordSequenceIdField;

    private ArrayOf_tns2_SubInfo subNotifyField;

    /// <remarks/>
    [System.Xml.Serialization.SoapElementAttribute(IsNullable = true)]
    public string recordSequenceId
    {
        get
        {
            return this.recordSequenceIdField;
        }
        set
        {
            this.recordSequenceIdField = value;
        }
    }

#3


引用 2 楼 ooo7880000 的回复:
以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。


俺们也是通过wsdl /si 搞的,不知道为啥不行

#4


up     200分吸引火力 关于web service生成wsdl

#5


提供方如果完全按照协议来,完全没有必要理会消费方。

#6


引用 5 楼 sunzongbao2007 的回复:
提供方如果完全按照协议来,完全没有必要理会消费方。


有两个问题:
1、里面有BPEL的东西,具体的我也不懂
2、生成的wsdl 差异很大(比如attributeFormDefault="unqualified"这个.net的wsdl就没有,但是这个是必须      的),造成调用问题,因为实现这个web service的有好多,所以必须严格按照他的来
up

#7


up  up up

#8


该回复于2012-11-11 23:20:53被管理员删除

#9


完全没接触过这方面,帮顶。

#10


帮顶起 算不算火力

#11


要是用wcf 开发的就简单了:

http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00

或者实现:IWsdlExportExtension

#12


好需要问吗,既然都有了wsdl,那就严格按这个来吧,有不一样的地方,说明你没有做到位,没什么好说的,继续研究改进吧。

#13


wsdl本身就是标准,是不是返回了不能序列化的类型

#14


引用 11 楼 fangxinggood 的回复:
要是用wcf 开发的就简单了:
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension


web service 不能实现吗?一定要wcf?

#1


又事C#和java对接!

不管他们,直接返回json给他们自己解析好了。不要管他们怎么说。

传输jsom或者xml是绝对规范的。

#2


以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。 200分吸引火力 关于web service生成wsdl



//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.269
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

// 
// 此源代码由 wsdl 自动生成, Version=4.0.30319.1。
// 


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
[System.Web.Services.WebServiceBindingAttribute(Name = "xxxxxx", Namespace = "http://soap.xxx.xxx.xxx.com")]
public interface xxxxx
{

    /// <remarks/>
    [System.Web.Services.WebMethodAttribute()]
    [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://soap.xxx.xxx.xxx.com", ResponseNamespace = "http://soap.bossagent.vac.unicom.com")]
    [return: System.Xml.Serialization.SoapElementAttribute("xxxx")]
    OrderRelationUpdateNotifyResponse orderRelationUpdateNotify(OrderRelationUpdateNotifyRequest orderRelationUpdateNotifyRequest);
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.SoapTypeAttribute(Namespace = "http://req.sync.soap.xxx.xxx.xxx.com")]
public partial class xxxxxxxx
{

    private string recordSequenceIdField;

    private ArrayOf_tns2_SubInfo subNotifyField;

    /// <remarks/>
    [System.Xml.Serialization.SoapElementAttribute(IsNullable = true)]
    public string recordSequenceId
    {
        get
        {
            return this.recordSequenceIdField;
        }
        set
        {
            this.recordSequenceIdField = value;
        }
    }

#3


引用 2 楼 ooo7880000 的回复:
以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。


俺们也是通过wsdl /si 搞的,不知道为啥不行

#4


up     200分吸引火力 关于web service生成wsdl

#5


提供方如果完全按照协议来,完全没有必要理会消费方。

#6


引用 5 楼 sunzongbao2007 的回复:
提供方如果完全按照协议来,完全没有必要理会消费方。


有两个问题:
1、里面有BPEL的东西,具体的我也不懂
2、生成的wsdl 差异很大(比如attributeFormDefault="unqualified"这个.net的wsdl就没有,但是这个是必须      的),造成调用问题,因为实现这个web service的有好多,所以必须严格按照他的来
up

#7


up  up up

#8


该回复于2012-11-11 23:20:53被管理员删除

#9


完全没接触过这方面,帮顶。

#10


帮顶起 算不算火力

#11


要是用wcf 开发的就简单了:

http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00

或者实现:IWsdlExportExtension

#12


好需要问吗,既然都有了wsdl,那就严格按这个来吧,有不一样的地方,说明你没有做到位,没什么好说的,继续研究改进吧。

#13


wsdl本身就是标准,是不是返回了不能序列化的类型

#14


引用 11 楼 fangxinggood 的回复:
要是用wcf 开发的就简单了:
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension


web service 不能实现吗?一定要wcf?