`
jaychang
  • 浏览: 734833 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

调用webservice异常总结

 
阅读更多

 

 

解决方案:

 

调用webservice时,没有指定SoapAction,没有指定RequestNameSpace,所以请求时总是出现“服务器未能识别 HTTP 标头 SOAPAction 的值。 

如果使用axis调用,请按以下方式调用:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) throws  Exception {  
    //不带?wsdl后缀
  // 创建一个服务(service)调用(call)     
  Service service = new Service();
  //通过service创建call对象 
  Call call = (Call) service.createCall();    
  // 设置service所在URL    
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  //qqCheckOnline 是net 那边的方法 "http://WebXml.com.cn/" 这个也要注意Namespace 的地址,不带也会报错
  call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline")); 
  //qqCode也是.NET那边方法的参数名,即qqCheckOnline的参数名
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"), 
         org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  //避免Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误
  call.setUseSOAPAction(true); 
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //返回参数的类型
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); //这个也要注意 就是要加上要调用的方法Add,不然也会报错
  // Object 数组封装了参数     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});    
  System.out.println("--------"+ret); 
    }

注意注释部分。

 

http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl为公共webservice

二、使用CXF的wsdl2java.bat 根据wsdl文件生成客户端调用.net发布webservice时出现以下异常

1
( undefined element declaration 's:schema')

解决方案:

 

打开wsdl.xml,用

1
2
<s:any minOccurs="2" maxOccurs="2"/>替代<s:element ref="s:schema" /><s:any /> 
这个wsdl2java的生成错误应该是和JAXB不支持xml的ref有关,因为<s:any minOccurs="2" maxOccurs="2"/>和<s:element ref="s:schema" /><s:any />其实是等价的。<s:element ref="s:schema" />其实就是说这里可以用s:schema规定的任意一种元素类型来替代,<s:any />正是起到了这个作用,<s:any minOccurs="2" maxOccurs="2"/>只不过是把两个<s:any />

写成了一句而已。 

参考http://blog.sina.com.cn/s/blog_a53901340101cnt5.html

 

三、使用CXF的wsdl2java.bat根据wsdl文件生成客户端编译super报错

 

解决方案:

 

其不能正常编译通过是由于jax-ws2.2规约与java6冲突。 

 

但程序又不能仅以java5来编译,故需要降低jax-ws规约版本,可以这样处理:  执行命令 

wsdl2java -frontend jaxws21 -client *.xml 

 

这样以jax-ws2.1生成的代码就可以在java6中编译通过并可执行。

 

我用文本比对工具这两次生成的客户端代码进行比较,发现后者生成的客户端代码多了3个构造函数,所以,将报错的3个构造函数移除也可以解决以上问题。 

长城不是一天垒起来的,继续积累吧。

 

分享到:
评论

相关推荐

    nodejs和Java调用webservice接口总结.docx

    ### Node.js 和 Java 调用 WebService 接口总结 #### 一、Java 实现方式 在 Java 中,调用 WebService 接口通常涉及使用 Apache CXF 或其他类似的库来生成客户端代码并进行调用。以下是具体的步骤: ##### 1. ...

    .net调用webservice接口例子

    在.NET框架中,调用Web服务接口...总结来说,.NET调用Web Service接口涉及到添加服务引用、生成代理类、配置连接、调用方法以及异常处理等步骤。在实际项目中,开发者需要结合具体的业务需求和接口文档进行细致的操作。

    oracle调用webservice接口地址demo

    ### Oracle调用WebService接口地址Demo解析 #### 一、引言 在企业级应用开发中,不同系统间的集成与通信尤为重要。Oracle数据库作为一款广泛使用的数据库管理系统,支持多种方式与其他系统进行交互,其中通过调用...

    MVC调用webService

    总结,通过JavaScript在MVC中调用WebService,我们可以实现客户端和服务器间无刷新的数据交换,提高应用的响应性和用户体验。了解并熟练掌握这一技术,对于开发交互性强的Web应用程序至关重要。

    c# httpwebrequest调用webservice demo

    在深入了解如何使用`HttpWebRequest`调用WebService之前,我们先简要回顾一下相关的基础知识。 ##### 1.1 WebService简介 WebService是一种基于XML和HTTP协议的应用程序接口(API),它允许不同平台、不同语言编写的...

    客户端编程方式调用webservice

    总结一下,Java通过客户端编程方式调用WebService主要涉及理解WSDL,生成客户端代理类,实例化并调用服务,处理异常,以及关闭连接。这种通信方式使得不同平台、不同语言的应用程序能够无缝地进行数据交换,是企业级...

    .Net动态调用WebService

    总结,.NET动态调用WebService涉及的关键技术包括SOAP协议的理解、选择合适的调用类(如SoapHttpClientProtocol或HttpClient)、数据序列化和反序列化、异常处理以及安全措施。了解并掌握这些知识点,将使你在开发中...

    ajax异步调用webservice实例

    总结,AJAX异步调用WebService是现代Web应用中常见的一种通信方式,它极大地提升了用户体验。理解并掌握这一技术,对于Web开发者来说至关重要。通过实际的代码示例和不断的实践,你可以更深入地理解和应用这个技术。

    JAVA调用WEBSERVICE图解说明

    总结,Java调用WebService涉及的主要知识点包括:理解WebService的概念,掌握JAX-WS框架,使用Eclipse生成和调用客户端代码,异常处理,以及如何在实际应用中部署和运行。通过上述步骤,开发者可以在Java环境中高效...

    java调用webservice工程

    总结,Java调用WebService工程涉及到的知识点包括JAX-WS和JAX-RS的使用、WebService客户端的创建、服务的部署和调用、HTTP客户端的使用以及安全和异常处理策略。通过这些技术,Java应用程序能够灵活地与其他系统进行...

    Android调用WebService

    总结,Android调用WebService涉及了多种技术,包括选择合适的协议(如SOAP或RESTful),引入相应的库,构建和发送请求,以及处理返回的结果。理解这些知识点,并结合实际的AndroidWSDemo项目,将有助于你在实际开发...

    Python调用WebService接口实例说明

    ### Python调用WebService接口实例说明 #### 背景与目的 在当今信息化时代,不同系统之间的通信变得越来越重要。为了实现系统间的高效交互,多种技术手段被开发出来,其中WebService作为一种常用的服务端口,提供了...

    C#实现SOAP调用WebService.rar

    5. **处理异常和关闭连接**:在调用WebService后,应处理可能出现的异常,如网络错误或服务器错误。同时,记得在完成操作后关闭客户端以释放资源: ```csharp try { // 调用服务 } catch ...

    Winform调用WebService简单示例

    总结,通过上述步骤,我们可以实现Winform应用程序调用WebService,从而利用Web服务实现功能扩展或数据交换。这不仅简化了客户端的开发,还使得应用程序能够利用分布式系统的强大能力。在实际开发中,可以根据具体...

    C# 动态调用WebService服务

    总结,动态调用WebService服务是C#开发者必备的技能之一,它涉及反射、HTTP通信、XML或JSON解析等多个方面。了解这些知识点不仅有助于编写灵活的客户端代码,还能增强对分布式系统交互的理解。在实际项目中,根据Web...

    Winform中对WebService的调用

    在调用WebService时,可能会遇到各种异常,如网络问题、服务不可用等。因此,建议在调用代码中包含适当的异常处理逻辑,以确保应用程序的健壮性和用户体验。 ### 总结 在Winform应用中调用WebService,不仅能够...

    WSDl生成WebService接口及调用

    在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...

    C#调用WebService接口

    总结,C#调用WebService接口涉及的知识点包括:WebService的基本概念,C#的添加服务引用,使用代理类,配置和服务实例化,异步调用,错误处理,以及WSDL和SOAP的理解。掌握这些知识点,开发者可以有效地在C#应用程序...

    java调用webservice的axis2.jar包

    总结,Java调用WebService使用Axis2.jar包时,需理解其组件功能,按照规范流程操作,结合最佳实践,可以有效地与Web服务进行交互。同时,随着技术的发展,也应关注新的Web服务框架和标准,如JAX-RS(Java API for ...

    C#动态调用webservice

    总结来说,C#动态调用WebService是一种提高应用程序适应性的技术,通过动态配置服务URL,我们可以轻松应对IIS服务器的变动。结合IIS的管理和发布功能,可以构建出高效、可维护的分布式系统。在实际项目中,这种技术...

Global site tag (gtag.js) - Google Analytics