调用WebService接口遇到的问题。
2017-11-28 17:30
330 查看
工作需要,调用一个项目的接口,原本采用的是wsimport 命令的方式。但是后来发现,如果服务在windows上,一切正常,可以调用到接口。但是如果服务在Linux上,调用接口会报
"在文档的元素内容中找到无效的 XML 字符 (Unicode: 0x0)".网上说是接口返回的xml的字符集有问题。折腾了半天都搞不定。
后面换一种eclipse自带的生成webService Client的方式,来调用接口,但是也有问题。
第2种:webService Client方式。
第一步:新建Java项目。
第二步:select a wizard新建WebService Client 代码,这里需要正确的http://192.168.1.251:8180/TestProject/services/ws/DSMAuth?wsdl
第三步:测试生成的代码。
问题点:以上可以正常测试,但是当我部署到Tomcat上面的时候,报“ org.apache.commons.discovery.DiscoveryException: No implementation defined for org.apache.commons.logging.LogFactory“错误。说是没有实现log记录方式。但是我明明有放log的jar包进去。所有这种方式也放弃了。如果有人解决,请多多指教留言,谢谢哈。
因为这种方式不行,后面只能再想办法。突然有个灵感,用wsimport方法生成的代码,调用接口报xml字符有问题,那如果我返回String字符串是不是就没问题了呢。以下是用最终的方法。
第1种方法:
第一步:1、借助wsimport命令工具自动生成客户端代码
打开命令行窗口,切换到项目的src目录,执行"wsimport
-keep http://192.168.1.251:8180/Testproject/services/ws/DSMAuth?wsdl href="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl" target=_blank>"生成客户端代码,如下图所示:
这样就会生成代码到WebService_Wsimport/src目录下。
第二步:新建测试类,main方法里面书写如下。
//创建WSDL的URL,注意不是服务地址
URL url=null;
try {
url = new URL(urlStr);
} catch (Exception e) {
System.out.println("接口的url访问出错!!");
}
//创建服务名称
QName qname = new QName("http://ws.lddsm.com", "DSMAuth");
Service service = Service.create(url, qname);
// //调用查询方法
String result=null;
try {
// //获取服务实现类
DSMAuth authService = service.getPort(DSMAuth.class);
result = authService.getRegisterInfoNew(null);
} catch (Exception e) {
System.out.println("调用接口失败!");
}
return result;
问题:上面这句authService.getRegisterInfoNew(null);原先返回的是一个类,后面改成返回String,就不会报XML字符问题了。
"在文档的元素内容中找到无效的 XML 字符 (Unicode: 0x0)".网上说是接口返回的xml的字符集有问题。折腾了半天都搞不定。
后面换一种eclipse自带的生成webService Client的方式,来调用接口,但是也有问题。
第2种:webService Client方式。
第一步:新建Java项目。
第二步:select a wizard新建WebService Client 代码,这里需要正确的http://192.168.1.251:8180/TestProject/services/ws/DSMAuth?wsdl
第三步:测试生成的代码。
问题点:以上可以正常测试,但是当我部署到Tomcat上面的时候,报“ org.apache.commons.discovery.DiscoveryException: No implementation defined for org.apache.commons.logging.LogFactory“错误。说是没有实现log记录方式。但是我明明有放log的jar包进去。所有这种方式也放弃了。如果有人解决,请多多指教留言,谢谢哈。
因为这种方式不行,后面只能再想办法。突然有个灵感,用wsimport方法生成的代码,调用接口报xml字符有问题,那如果我返回String字符串是不是就没问题了呢。以下是用最终的方法。
第1种方法:
第一步:1、借助wsimport命令工具自动生成客户端代码
打开命令行窗口,切换到项目的src目录,执行"wsimport
-keep http://192.168.1.251:8180/Testproject/services/ws/DSMAuth?wsdl href="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl" target=_blank>"生成客户端代码,如下图所示:
这样就会生成代码到WebService_Wsimport/src目录下。
第二步:新建测试类,main方法里面书写如下。
//创建WSDL的URL,注意不是服务地址
URL url=null;
try {
url = new URL(urlStr);
} catch (Exception e) {
System.out.println("接口的url访问出错!!");
}
//创建服务名称
QName qname = new QName("http://ws.lddsm.com", "DSMAuth");
Service service = Service.create(url, qname);
// //调用查询方法
String result=null;
try {
// //获取服务实现类
DSMAuth authService = service.getPort(DSMAuth.class);
result = authService.getRegisterInfoNew(null);
} catch (Exception e) {
System.out.println("调用接口失败!");
}
return result;
问题:上面这句authService.getRegisterInfoNew(null);原先返回的是一个类,后面改成返回String,就不会报XML字符问题了。
相关文章推荐
- cxf调用.net webservice 接口遇到的问题(尚未解决)
- 客户端axis调用cxf服务端webservice接口问题
- dll动态链接库之用类写配置文件和调用判断方法接口的实现中遇到的若干问题
- webservice接口常见问题1:客户端使用SOAP方式调用CXF服务时异常
- 调用成熟接口、谨慎使用未知接口------遇到问题时, 不一定要死死纠缠原因
- 调用axis2开发的接口遇到的问题
- args.get_error的详细解释和在asp.net ajax中调用webservice遇到的问题
- 调用webservice时遇到的几个问题
- PB调用WebService遇到的问题
- PB调用WebService遇到的问题
- WP8调用WebService或WCF时遇到的问题及解决方案
- Axis2发布webservice过程 和Axi af16 s2调用wsdl 及遇到的问题
- Axis2 java调用.net webservice接口的问题2(郑州就维)
- cxf调用.net中的接口遇到的两个问题
- eclipse生成的webservice客户端调用webservice接口返回值慢的问题
- 关于webService调用遇到的问题
- 关于 ksoap2调用 webservice 遇到的一些问题
- Android通过ksoap调用webservice遇到的问题及解决之道全纪录
- 调用企业信息查询接口展示数据并对外提供接口遇到的问题
- webservice 接口的实现和实现过程所遇到的问题!!