关于java调用.Net WCF服务的讲解(一)

最近做毕业设计,一个团体项目。

我做的是关于系统构架方面的。简单点说就是.Net写的一个WCF服务,而访问服务的是java客户端或者说是android客户端。

而我的WCF服务配置成wsHttpBinding+certificate证书加密+自定义的用户名密码检验功能。在服务的访问上用了https协议,个人也没做过java平台和.Net Web Service的整合。而且https无疑增加了这个难度。

所以刚开始的想法是通过asp.net网页来访问服务,再利用网页来给java,android返回xml。这样利用http避免了平台的不兼容性。

缺点是各种业务的增加删除不紧要在Web Service中增加,还要在网页中增加。

而后来由于另外几个同学迟迟没有开始做应用端,导致业务无法预料,时间越脱越长。

个人觉得时间可能有点紧,就想把框架简单化,直接让java端和andriod客户端调用WCF服务。

于是清明放假这几天改造了一下程序框架,网络上参考了各种文章,终于调试成功了。

废话不说了,看代码。

首先,最简单的服务,没有certificate,没有自定义的用户名密码检验,只有wsHttpBinding。

WCF服务配置程序如下:

 

java客户端调用程序:(用axis2-1.4.1生成,生成方法cmd下 axis2的bin目录下 wsdl2java -uri http://localhost:8889/test?wsdl)

 

结果调用失败,一直是什么read time out,超时。网查查阅资料,说这么设置就可以了。

 

于是设置,结果还是超时。继续找资料。发现都是说超时。当时那个崩溃啊~~好在翻了10页google,终于找到一篇说是java不支持wshttpbinding协议。因为wshttpbinding是微软在SOAP1.0基础上改进过的,不是通用的绑定协议。这里又补充了下理论知识,呵呵~~于是改为basicHttpBinding。

WCF服务配置(basicHttpBinding)

 

然后重新用axis2 生成客户端代理。调用代码,果然成功。调用代码不变。

调用结果图:

调用结果

下面是axis2生成的客户端代理结构图。

好了,今天就先调用成功。要下班了。明天在进一步加各种功能。

猜你喜欢

转载自blog.csdn.net/cch5487614/article/details/6305044