`

axis2调用带Authentication认证的webservice

阅读更多
package com.wujianjun.axis2.client;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HttpTransportProperties;

public class TestClient {
	public static void main(String[] args) {
		try {
			ServiceClient sc = new ServiceClient();
			Options opts = sc.getOptions();
			opts.setTo(new EndpointReference("http://10.10.0.68:8000/sap/bc/srt/rfc/sap/ztest/110/ztest/ztest"));
			opts.setAction("urn:ZTEST");
			HttpTransportProperties.Authenticator basicAuth = new HttpTransportProperties.Authenticator();
			basicAuth.setUsername("liuhand");
			basicAuth.setPassword("dev110");
//			basicAuthentication.setHost("xx.xx.x.xx");    
//			basicAuthentication.setDomain("xx.xx.xx.xx");  
			opts.setProperty(HTTPConstants.AUTHENTICATE, basicAuth);
			OMElement res = sc.sendReceive(createPayLoad());
			System.out.println(res);
		} catch (AxisFault e) {
			e.printStackTrace();
		}

	}

	public static OMElement createPayLoad() {
		OMFactory fac = OMAbstractFactory.getOMFactory();
		OMNamespace omNs = fac.createOMNamespace("urn:sap-com:document:sap:rfc:functions","m");
		OMElement method = fac.createOMElement("ZTEST", omNs);
		OMElement value = fac.createOMElement("IM_P", null);
		value.setText("Hello");
		method.addChild(value);
		System.out.println(method);
		return method;
	}

}
 
分享到:
评论
10 楼 香蕉8822 2012-12-23  
dabaosse 写道
你好,我调用SAP的服务时,报下面的错,好像跟解析报文有关吧? 帮忙看一下 谢谢:)

org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'P' (code 80) in DOCTYPE declaration; expected a space between PUBLIC keyword and public id
at [row,col {unknown-source}]: [1,22]
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:62)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIREServiceStub.ZhrRfcPernrHire(ZHR_RFC_PERNR_HIREServiceStub.java:158)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIRETestCase.stub(ZHR_RFC_PERNR_HIRETestCase.java:87)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIRETestCase.main(ZHR_RFC_PERNR_HIRETestCase.java:21)

我也遇到这个问题了呢,请问你最后解决了吗?
9 楼 wujianjun 2010-12-01  
用axis2的地址示例来说明:
Endpoint的地址:http://localhost:8080/test/services/test
WSDL的地址:http://localhost:8080/test/services/test?wsdl
调用的时候是一定要用endpoint地址的,wsdl地址只是供调用者分析查看针对Web服务的描述(有哪些方法供调用、每个方法内有哪些参数,返回值是什么)等等
8 楼 conworld 2010-11-21  
你好,
EndpointReference("http://10.10.0.68:8000/sap/bc/srt/rfc/sap/ztest/110/ztest/ztest")
这个URL好象不是Endpoint的地址,只是WSDL的URL吧
我不知道这两个地址有什么区别,但SOAMANAGER说必须用Endpoint的URL,象这样的
http://eccides:5001/sap/bc/srt/wsdl/bndg_DFE183GE39MD8DF1AD3200237DD2B8F6/wsdl11/allinone/ws_policy/document?sap-client=200
这个WSDL文件里面还有一个SOAP address
我这边的Java开发人员说不能用上面的地址,只能用WSDL文件里面的SOAP address,不知道楼主是不是也用的这个地址
7 楼 wujianjun 2010-11-12  
这里的代码是已经解决了这个问题的呀,如果不加
# HttpTransportProperties.Authenticator basicAuth = new HttpTransportProperties.Authenticator(); 
#             basicAuth.setUsername("liuhand"); 
#             basicAuth.setPassword("dev110"); 
# //          basicAuthentication.setHost("xx.xx.x.xx");     
# //          basicAuthentication.setDomain("xx.xx.xx.xx");   
#             opts.setProperty(HTTPConstants.AUTHENTICATE, basicAuth); 
就会出现用户名密码错误的问题。
加上以上代码,把用户名和密码改成你项目中正确的用户名和密码就可以解决问题。
6 楼 songfantasy 2010-09-08  
我也遇到此问题,楼主是怎么解决的啊?谢谢。
5 楼 wujianjun 2009-12-16  
建议你先用 Altova XMLSpy 这个XML工具调用一次,如果能成功再用java去调。很多的错可能会出现在sap发布出来的wsdl文件里面。
4 楼 dabaosse 2009-12-14  
我用直接用wsdl2java生成的客户端
3 楼 dabaosse 2009-12-14  
你好,我调用SAP的服务时,报下面的错,好像跟解析报文有关吧? 帮忙看一下 谢谢:)

org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'P' (code 80) in DOCTYPE declaration; expected a space between PUBLIC keyword and public id
at [row,col {unknown-source}]: [1,22]
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:62)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIREServiceStub.ZhrRfcPernrHire(ZHR_RFC_PERNR_HIREServiceStub.java:158)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIRETestCase.stub(ZHR_RFC_PERNR_HIRETestCase.java:87)
at mc_style.functions.soap.sap.document.sap_com.ZHR_RFC_PERNR_HIRETestCase.main(ZHR_RFC_PERNR_HIRETestCase.java:21)
2 楼 wujianjun 2009-12-14  
urn:sap-com:document:sap:rfc:functions 是sap里的那个表空间名称。把你们的异常信息贴出来吧!
1 楼 nocb 2009-12-12  
你好,你的代码很有用
客户端代码我一般是用eclipse plugin生成的,但是在生成 sap的web service时会报错,
提示 是和urn:sap-com:document:sap:rfc:functions 这个有关,请问该如何处理呢?
谢谢

相关推荐

    axis2发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    axis2客户端调用服务端,带用户身份认证

    当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户能够访问服务。 首先,理解身份认证是网络安全的基础。在Web服务中,通常采用...

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    java 通过axis调用天气预报的webservice

    标题中的“Java通过Axis调用天气预报的WebService”是指使用Java编程语言,通过Apache Axis库来访问和使用公开的天气预报Web服务。Apache Axis是一个开放源码的SOAP(简单对象访问协议)工具包,它允许开发者创建和...

    axis2客户端调用webService接口,精简jar包

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    Axis2调用SAP Webservice源码

    Axis2调用SAP Webservice源码 使用Axis2 org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar插件生成本地Java Proxy同事生成同步和异步调用测试用例 更重要的是配备详细文档,实乃Java与SAP集成是宝典!

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    AXIS2远程调用WebService是Java开发者在进行分布式服务交互时常用的一种技术。本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    java axis调用第三方webservice程序demo

    本文将详细介绍如何使用Java Axis调用第三方Webservice,并提供一个简单的示例。 一、Java Axis调用第三方Webservice的准备工作 1. **所需Jar包**: 在Java中使用Axis调用Webservice,首先需要引入必要的库文件。...

    Axis2教程和java调用webservice的各种方法总结

    标题“Axis2教程和java调用webservice的各种方法总结”表明了本文档主要聚焦于两个核心内容:一是Axis2框架的使用教程,二是Java语言调用Web服务的不同方法的综合概述。 描述中的“Axis2教程”暗示了会详细讲解Axis...

    axis2调用WebService详细说明

    ### Axis2调用WebService详细说明 #### 一、Axis2简介与下载 Axis2是Apache组织下的一款开源WebService实现框架,它支持SOAP1.1、SOAP1.2等标准协议,能够提供高效、灵活的服务发布与调用能力。在本文档中,我们将...

    axis客户端调用webservice

    java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG

    Android axis调用Webservice

    本文将详细介绍如何在Android应用中利用Axis2来调用Web Service。 **一、Android与Web Service交互基础** 1. **SOAP(Simple Object Access Protocol)**: 是一种轻量级的协议,用于交换结构化的和类型化的信息。...

    Java Axis 直接调用webservice 接口工具类

    Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;

    axis2客户端调用带Ntlm认证例子

    本篇将详细介绍如何在Axis2客户端中调用需要NTLM认证的Web服务,并提供相关代码示例和所需库。 首先,NTLM是一种由Microsoft开发的身份验证协议,它基于质询-响应机制,用于在网络中保护用户的身份信息。在与NTLM...

    axis2调用webservice接口jar包

    本文将详细介绍如何使用Axis2调用WebService接口,并基于提供的jar包"axis2-1.7.6"进行说明。 **一、Axis2简介** Axis2是Apache软件基金会开发的一个Web服务引擎,它基于SOAP(Simple Object Access Protocol)和WS...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    Spring集成axis2实现webservice所用到的包

    总结来说,Spring集成Axis2实现Web服务涉及到Spring的IoC容器、服务的创建和发布、以及客户端的调用等多个环节。了解并掌握这些知识点,对于开发高质量的Web服务应用至关重要。在实际项目中,务必确保所有必要的库...

Global site tag (gtag.js) - Google Analytics