项目中,客户的另一个系统需要和我们做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是绝对规范的。
不管他们,直接返回json给他们自己解析好了。不要管他们怎么说。
传输jsom或者xml是绝对规范的。
#2
以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。
//------------------------------------------------------------------------------
// <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
俺们也是通过wsdl /si 搞的,不知道为啥不行
#4
up
#5
提供方如果完全按照协议来,完全没有必要理会消费方。
#6
有两个问题:
1、里面有BPEL的东西,具体的我也不懂
2、生成的wsdl 差异很大(比如attributeFormDefault="unqualified"这个.net的wsdl就没有,但是这个是必须 的),造成调用问题,因为实现这个web service的有好多,所以必须严格按照他的来
up
#7
up up up
#8
#9
完全没接触过这方面,帮顶。
#10
帮顶起 算不算火力
#11
要是用wcf 开发的就简单了:
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension
#12
好需要问吗,既然都有了wsdl,那就严格按这个来吧,有不一样的地方,说明你没有做到位,没什么好说的,继续研究改进吧。
#13
wsdl本身就是标准,是不是返回了不能序列化的类型
#14
web service 不能实现吗?一定要wcf?
#1
又事C#和java对接!
不管他们,直接返回json给他们自己解析好了。不要管他们怎么说。
传输jsom或者xml是绝对规范的。
不管他们,直接返回json给他们自己解析好了。不要管他们怎么说。
传输jsom或者xml是绝对规范的。
#2
以前一个项目也是这样的,不过我是直接根据对方提供的wsdl用wsdl.exe工具生成的服务端代码,对方用java可以正常调用。。汗颜。。没太深入,里面的原理还搞不太懂。看对楼主有帮助不。
//------------------------------------------------------------------------------
// <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
俺们也是通过wsdl /si 搞的,不知道为啥不行
#4
up
#5
提供方如果完全按照协议来,完全没有必要理会消费方。
#6
有两个问题:
1、里面有BPEL的东西,具体的我也不懂
2、生成的wsdl 差异很大(比如attributeFormDefault="unqualified"这个.net的wsdl就没有,但是这个是必须 的),造成调用问题,因为实现这个web service的有好多,所以必须严格按照他的来
up
#7
up up up
#8
#9
完全没接触过这方面,帮顶。
#10
帮顶起 算不算火力
#11
要是用wcf 开发的就简单了:
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension
http://social.msdn.microsoft.com/Forums/pl/wcf/thread/2c1e41c6-4a0c-4aea-839c-fc0be6c83d00
或者实现:IWsdlExportExtension
#12
好需要问吗,既然都有了wsdl,那就严格按这个来吧,有不一样的地方,说明你没有做到位,没什么好说的,继续研究改进吧。
#13
wsdl本身就是标准,是不是返回了不能序列化的类型
#14
web service 不能实现吗?一定要wcf?