java调用.net的web service

一对应用,A使用Java开发,B使用.NET开发;现要求B应用开发一个.NET WebService接口,将此接口URL登记到A应用中,当有消息产生时,A应用通过此接口向B应用报告。

WebService开发出来后联调发现,即使有消息产生,B应用接口也未能拿到任何数据,查看IIS日志却发现A应用是有在调用接口的。由于A系统已经是一个产品化的应用,所以只能是调整B应用去适应它。

首先抓包,发现接口调用IIS直接报告HTTP 500错误

客户端的soap请求中userIdType变成了这种格式:<userIdType href="#id1"/>,服务端的userIdType变量值要从其后的id为id1的<multiRef>1<multiRef>中取到,但是由于请求端不能修改,我不知道该如何修改.net web service来适应客户端。请各位帮忙。分不够再加也不知道你是怎么请求webservice的,简单的东西被你搞复杂了,
访问webservice最简单的方法就是url get方式了,你发送一个url请求也会 格式错误?
就以你说的天气预报为例,先定义好天气信息的可序列化的类(或者用Map结构表示也行),然后定义好一个获取天气情况的方法,这方法可以在本地调用,也可以直接将其发布为服务让其他语言直接调用。

关于如何发布这样的可以跨语言跨平台的服务在这里有一个其.NET版本的视频教程

web service是为了跨平台,因此要仅仅实现最基本的、最傻瓜的协议,而不要轻易使用复杂的机制。

在更早,网站之间通信实际上只要访问网页并post数据就够了,在文档中把消息协议制定好,由双方各自解析。

使用web service的好处是客户端可以通过wsdl来自动发现服务,比如互联网上发布10000个web service,不会搞出几千种所谓的私有协议出来!先有服务而后快速开发客户端,并且客户端可以自动适应服务端升级的情况。

但是你的情况,作为客户端竟然说“已经是一个产品化的应用”,这就比较难办了。因为vs中提供的工具只是帮助你去编译wsdl,当初可没有想到以那个次序来开发web service服务!

解决办法如下:
1、找到你通过WSDL文件生成的服务端的CS代码文件,如“SyncNotifySPServiceServiceInterfaces.cs”文件;
2、找到其中的 private System.Nullable<int> updateTypeField; 
3、改成private int updateTypeField;
4、另一个userIdTypeField 字段同理;

基本上就可以了。应该是类型匹配的问题;

对方这个平台应该是“爱X信”公司的。针对各省平台开发时应先确认对方平台的开发厂家。因为不同厂家细节有区别,可能需要分别对待。

强烈建议:针对不同厂家开发的平台向对方发布不同的WEB服务端的地址。

这个解决方案技术层面的东西,你有兴趣自己研究一下吧~我这里不多叙述了。

来源:足球直播

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值