发布和调用Webservice很简单,但小问题依然不断,特总结如下:
一、Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误。
解决方案:
调用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 的地址,不带也会报错
//qqCode也是.NET那边方法的参数名,即qqCheckOnline的参数名
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); //返回参数的类型
// 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个构造函数移除也可以解决以上问题。
长城不是一天垒起来的,继续积累吧。
相关推荐
### Node.js 和 Java 调用 WebService 接口总结 #### 一、Java 实现方式 在 Java 中,调用 WebService 接口通常涉及使用 Apache CXF 或其他类似的库来生成客户端代码并进行调用。以下是具体的步骤: ##### 1. ...
在.NET框架中,调用Web服务接口...总结来说,.NET调用Web Service接口涉及到添加服务引用、生成代理类、配置连接、调用方法以及异常处理等步骤。在实际项目中,开发者需要结合具体的业务需求和接口文档进行细致的操作。
### Oracle调用WebService接口地址Demo解析 #### 一、引言 在企业级应用开发中,不同系统间的集成与通信尤为重要。Oracle数据库作为一款广泛使用的数据库管理系统,支持多种方式与其他系统进行交互,其中通过调用...
总结,通过JavaScript在MVC中调用WebService,我们可以实现客户端和服务器间无刷新的数据交换,提高应用的响应性和用户体验。了解并熟练掌握这一技术,对于开发交互性强的Web应用程序至关重要。
在深入了解如何使用`HttpWebRequest`调用WebService之前,我们先简要回顾一下相关的基础知识。 ##### 1.1 WebService简介 WebService是一种基于XML和HTTP协议的应用程序接口(API),它允许不同平台、不同语言编写的...
总结一下,Java通过客户端编程方式调用WebService主要涉及理解WSDL,生成客户端代理类,实例化并调用服务,处理异常,以及关闭连接。这种通信方式使得不同平台、不同语言的应用程序能够无缝地进行数据交换,是企业级...
总结,.NET动态调用WebService涉及的关键技术包括SOAP协议的理解、选择合适的调用类(如SoapHttpClientProtocol或HttpClient)、数据序列化和反序列化、异常处理以及安全措施。了解并掌握这些知识点,将使你在开发中...
总结,AJAX异步调用WebService是现代Web应用中常见的一种通信方式,它极大地提升了用户体验。理解并掌握这一技术,对于Web开发者来说至关重要。通过实际的代码示例和不断的实践,你可以更深入地理解和应用这个技术。
总结,Java调用WebService涉及的主要知识点包括:理解WebService的概念,掌握JAX-WS框架,使用Eclipse生成和调用客户端代码,异常处理,以及如何在实际应用中部署和运行。通过上述步骤,开发者可以在Java环境中高效...
总结,Java调用WebService工程涉及到的知识点包括JAX-WS和JAX-RS的使用、WebService客户端的创建、服务的部署和调用、HTTP客户端的使用以及安全和异常处理策略。通过这些技术,Java应用程序能够灵活地与其他系统进行...
总结,Android调用WebService涉及了多种技术,包括选择合适的协议(如SOAP或RESTful),引入相应的库,构建和发送请求,以及处理返回的结果。理解这些知识点,并结合实际的AndroidWSDemo项目,将有助于你在实际开发...
### Python调用WebService接口实例说明 #### 背景与目的 在当今信息化时代,不同系统之间的通信变得越来越重要。为了实现系统间的高效交互,多种技术手段被开发出来,其中WebService作为一种常用的服务端口,提供了...
5. **处理异常和关闭连接**:在调用WebService后,应处理可能出现的异常,如网络错误或服务器错误。同时,记得在完成操作后关闭客户端以释放资源: ```csharp try { // 调用服务 } catch ...
总结,通过上述步骤,我们可以实现Winform应用程序调用WebService,从而利用Web服务实现功能扩展或数据交换。这不仅简化了客户端的开发,还使得应用程序能够利用分布式系统的强大能力。在实际开发中,可以根据具体...
总结,动态调用WebService服务是C#开发者必备的技能之一,它涉及反射、HTTP通信、XML或JSON解析等多个方面。了解这些知识点不仅有助于编写灵活的客户端代码,还能增强对分布式系统交互的理解。在实际项目中,根据Web...
在调用WebService时,可能会遇到各种异常,如网络问题、服务不可用等。因此,建议在调用代码中包含适当的异常处理逻辑,以确保应用程序的健壮性和用户体验。 ### 总结 在Winform应用中调用WebService,不仅能够...
在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...
总结,C#调用WebService接口涉及的知识点包括:WebService的基本概念,C#的添加服务引用,使用代理类,配置和服务实例化,异步调用,错误处理,以及WSDL和SOAP的理解。掌握这些知识点,开发者可以有效地在C#应用程序...
总结,Java调用WebService使用Axis2.jar包时,需理解其组件功能,按照规范流程操作,结合最佳实践,可以有效地与Web服务进行交互。同时,随着技术的发展,也应关注新的Web服务框架和标准,如JAX-RS(Java API for ...
总结来说,C#动态调用WebService是一种提高应用程序适应性的技术,通过动态配置服务URL,我们可以轻松应对IIS服务器的变动。结合IIS的管理和发布功能,可以构建出高效、可维护的分布式系统。在实际项目中,这种技术...