Technorati 标记:
c#,
java,
axis2,
webservice
前一段时间一直被一个 c#调用 Java web service的问题困扰。
http://www.cnitblog.com/reene/archive/2007/06/29/29217.html
在网上一直找不到答案,后来在国外的一个论坛上有人提醒可能是命名空间的原因,摸索以后终于顺利解决这个问题。特别把它记下以后方便。
问题:
如果用c#调用java 的 webservice 时,发现调用返回值为基本类型(如 xsd:string xsd:int)的服务能过正常返回,而调用返回复杂类型如自定义对象时却返回 null,同时抓包发现服务器段明明已经正常答复soap消息。 就需要考虑命名空间的问题。
在我碰到的问题中,由于我把用来返回结果的bean 单独放到一个 xxx.xxx.bean 包中,而把webservice 的文件放在 xxx.xxx.service包中,在用wtp生成 webservice 服务时就把它们放到不同的命名空间中去了。
解决方案:
把用来的bean文件放置到与service同一个package中,这样用wtp lomboz之类工具生成时就直接会在一个命名空间中。
--本人备忘
最近在一个项目中,就遇到了这个问题,此文对我帮助很大,先谢谢这会兄弟了。另附一小段代码,备忘一下:
Java端的webservice中saveUser(JafUser user)方法中的JafUser类代码如下:
java 代码
-
-
-
-
-
- public class JafUser implements java.io.Serializable {
-
-
-
-
- private String userId;
- private String userName;
- private Integer regionId;
-
-
-
-
- public JafUser() {
- }
-
- public Integer getRegionId() {
- return regionId;
- }
-
- public void setRegionId(Integer regionId) {
- this.regionId = regionId;
- }
-
- public String getUserId() {
- return userId;
- }
-
- public void setUserId(String userId) {
- this.userId = userId;
- }
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer("[ ");
- sb.append("userId = "+this.userId).append(",");
- sb.append("userName = "+this.userName).append(",");
- sb.append("regionId = "+this.regionId).append(" ]");
- return sb.toString();
- }
- }
客户端c# 代码:
- ConsoleApplication1.com.lixy.ws.UserServiceEx manager = new ConsoleApplication1.com.lixy.ws.UserServiceEx();
- JafUser user = new JafUser();
- user.userId = "lixy01";
- user.userName = "lixiangyang01";
- user.regionId = 4301;
- user.regionIdSpecified = true;
- String result = manager.saveUser(user);
- Console.WriteLine("Result = " + result);
- Console.ReadLine();
regionIdSpecified 虽然不是JafUser对象()中的属性,但是在测试程序时,发现只有将user.regionIdSpecified设为 true,regionId才被发送到webservice端。望...
分享到:
相关推荐
asp.net调用java webservice实例
此文档是DotNet调用Java WebService的含代码的讲解与应用,对.Net开发者有很好的启发作用。
c#调用java带身份验证webservice
用户提供一个.net的webservice,本人在java框架中调用此webservice。
调用webservice接口,利用post方式传参数,将返回的XML结果,利用xmldocument返回到页面中。
WebService调用,C#WebService动态调用,JavaWebService通过WSDL生成调用
java调用.net的webservice传字符串参数,axis方式和xfire方式的使用说明及相关jar包。
本示例使用C#构造SOAP信息,通过HttpWebRequest调用java编写的带有Windows身份验证的WebService,代码中详细注释了每行代码的功能与作用; 对应文章:http://blog.csdn.net/cgs_______/article/details/77894599
C#直接调用java类(jar或.class文件),无需转化为.net组件,更快速、稳定 SatJni是C++编写的动态链接库,实现了C#,PB,Delphi,VB,VC等对Java的调用,能让你很容易地调用成熟的java类库和第三方java组件。不用再为移值...
实现了JAVA调用C#写的文本service 并且支持类的传输
网上的调用例子太多了,有的要用cmd来解析webserive,有的没有包,有的代码报错。学习及测试花了4天,终于完成了。 1直接把项目放到 myeclipse的工作区间加载就行。然后將axis-1_4包下的lib文件夹里的包 都加載到...
在WebService使用Md5和SHA1加密技术对用户密码进行加密处理,从而增加用户安全性。登陆判断同样通过Md5和SHA1加密密码然后和数据库经过加密密码进行比较来(它们可都是二进制滴哦!)验证用户是否存在 很好滴东西 ...
体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0使用Web Part创建应用程序之二...
在.net环境里,一直没有好的Xss跨站脚本攻击过滤工具,于是将Java下的AntiSamy封装成了WebService,供.net程序调用。 运行环境是TOMCAT 7,JDK 1.6。 将War包复制到Tomcat安装目录下的webapps目录,然后启动Tomcat...
WCF服务,配置可同时支持web调用和WCF调用,可以用于C#程序服务访问,也支持java等程序访问。java通过web调用,C#可以通过wcf访问。
例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解...
在SQL SERVER 2005中调用Web Service
30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。 答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。 31.公司要求开发一个继承System....
WebService SOAP和JSON