cxf调用.net中的接口遇到的两个问题
来源:互联网 发布:上古卷轴5低配优化 编辑:程序博客网 时间:2024/05/22 12:37
在使用CXF中,由于服务器使用的是.net开发中,由于之前没有调用过,所以按一般的CXF的调用方法进行调用,发现出现了一个问题,报如下的错误:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException:无法识别请求元素,后面是一个xml的片段
这个问题的原因是因为.net中采用了命名空间.所以需要在我的接口中将命名空间加上,我是直接在类上采用注解的方式把命名空间加上,命名空间的内容从哪里来,这个可以通过wsdl文档中发现.我的修改的示例如下:
@WebService(targetNamespace ="http://soap.interfaces.ssa.huawei.com")
publicinterface ICorePlat {
}
在targetNamespace中修改为WSDL文档中的命名空间即可解决上述的问题.
然后继续进行调用,又出现了另外的问题,报如下错误:
Exception in thread"main" java.lang.NullPointerException
at$Proxy28.sendSMS(Unknown Source)
atcom.feinno.gdp.promgr.ws.ws.Client.main(Client.java:66)
这个原因找了半天,最开始怀疑是java编译器的原因,因为我已经接收到了SOAP返回的片段,里面有我想要的结果,却偏偏无法返回至java对象中,最后发现.net服务器中对返回的参数进行命名,所以需要对返回结果进行注解,整个接口的示例如下:
@WebService(targetNamespace ="http://soap.interfaces.ssa.huawei.com")
publicinterface ICorePlat {
@WebResult(name="out")
publiclong sendSMS(InfoHeader header , String sessionId, Stringsender, String smsContent,
String receiverList, String productCode, StringpseudoFlag);
}
经过了上面的修改之后,编译运行似乎没有问题了,但是调用的结果始终有问题,在网上也查了下,发现传输的参数也需要进行命名,所以将其改为如下的代码:
@WebService(targetNamespace ="http://soap.interfaces.ssa.huawei.com")
publicinterface ICorePlat {
@WebResult(name ="out")
publiclong sendSMS(
@WebParam(name ="in0")InfoHeader in0 ,
@WebParam(name ="in1")Stringin1,
@WebParam(name ="in2")Stringin2,
@WebParam(name ="in3")Stringin3,
@WebParam(name ="in4")Stringin4,
@WebParam(name ="in5")Stringin5,
@WebParam(name ="in6")Stringin6);
}
经过上面的修改之后,仍然是不能返回正确结果的,虽然运行不会产生错误,但仍然表明有地方不对劲儿.后面发现wsdl文件中有这么一句话:
<s:importnamespace="http://bean.interfaces.iiss.huawei.com"/>
也就是说引入了一个新的命名空间,这个在我生成的SOAP片段中没有出现,于是继续进行修改,最后的办法是在ICorePlat这个类的同一个包下加入这样一个特殊的类就可以了,这个类类名叫: pacakge-info.java,里面的内容是:
@javax.xml.bind.annotation.XmlSchema(namespace ="http://bean.interfaces.iiss.huawei.com", elementFormDefault =javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.xxxx.xxxx.xxxx.ws.client;
xxxx表示项目的包名
至于为什么需要加入这样的类,是因为cxf在进行SOAP传输与解析时,通过该类对SOAP内容进行了命名空间的添加.
- cxf调用.net中的接口遇到的两个问题
- cxf调用.net webservice 接口遇到的问题(尚未解决)
- CXF动态客户端调用webservice实例 遇到的问题
- 调用接口是遇到的问题
- 调用WebService接口遇到的问题。
- 继续说说cxf调用.net中命令空间的问题
- cxf+spring 配置restfull风格的接口所遇到的问题
- CXF提供的接口如何调用
- Android调用基于cxf的WebService接口
- 最近遇到VS.Net的两个问题--无法调试,未加载符号和后台代码无法调用控件
- cxf调用webservice接口
- ASP.NET MVC 开发中遇到的两个小问题
- 使用CXF遇到的一个问题
- 使用cxf调用.net的Webservice
- 使用cxf调用.net的Webservice
- cxf+spring发布webservice接口及接口的调用
- cxf+spring发布webservice接口及接口的调用
- cxf+spring发布webservice接口及接口的调用
- java 内存管理
- 正则表达式中的特殊字符---转载(http://www.blogjava.net/onejavaer/)
- iphone UIView layer frame transform 动画细节
- 分析IBM datastage job 构建过程
- 【经典】用栈和堆来理解 String。好文章:String 必须要理解!!!
- cxf调用.net中的接口遇到的两个问题
- 关于javascript function对象那些迷惑
- 基本数值类型和final关键字
- dede笔记
- java初学者的忠告
- 在Android模拟器中模拟GPS、打电话、发短信……
- eclipse 开发 android 快捷键
- 编译android及connman代码时出现的问题汇总
- winfrom 回车切换焦点