热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javasoap头_Java调用Webservice加入认证头(soapenv:Header)

前言有时候调用webservice会出现Messagedoesnotconformtoconfiguredpolicy[AuthenticationTokenPolicy(S)]:

前言

有时候调用web service 会出现

Message does not conform to configured policy [ AuthenticationTokenPolicy(S) ]:  No Security Header found

这种错误。

以在 soapui 调用的结果来看, 会出现例如以下的返回

ZUe9CdW5ide47ketZnO04clcsAAC4tIs9jY0QBACA2yM6AQAAa7lYdAIAAG6P6AQAAKyF6AQAAKyF6AQAAKzlfwlSujBEUGQIAAAAAElFTkSuQmCC

出现这种错误的原因 是webservice 的服务端须要提供 soap 认证的表头。

举例来说。 可能须要加上例如以下的认证头:

UserName

Password

(这个细部的格式和服务端的要求有关, 详细的username和pass也是服务端提供的)

在sopaui 调用的时候, 加上相似, 就能呼叫成功了。

SFed7h+fLTUAAAAASUVORK5CYII=

在soapui 调用, 能够用以上方式来做。

在把wsdl 转为java 后。 又该怎样加上认证的头信息呢?

cxf 加上认证头

(以上的认证头。 比較接近cxf 的调用方式。

)

假设使用的是cxf生产的客户端的代码。

在 _Client 调用的时候加上 例如以下代码:(在方法调用的代码之前)

Map props = new HashMap();

props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);

props.put(WSHandlerConstants.PASSWORD_TYPE,WSConstants.PW_TEXT);

props.put(WSHandlerConstants.USER, "UserName");

props.put(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());

WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(props);

Client client = ClientProxy.getClient(port);

client.getOutInterceptors().add(wssOut);

在client 的java 文件里, 新增下面内部类

public static class PasswordHandler implements CallbackHandler

{

public void handle(javax.security.auth.callback.Callback[] callbacks) {

for (int i = 0; i

WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];

pc.setPassword("password");

}

}

}

Axis2 加上认证头

针对以上的认证头在axis2 产生的java 文件里怎样加入呢(Axis2自己主动产生的java 文件并不会自己主动产生main的測试文件, 须要自己写。  XXXXProxy.java 这是供调用的类文件。 只是这些和加入认证头关系不大)

axis2会产生一个  XXXXPortBindingStub.java 的文件。

这里面的内容就是实际的方法体。

找到我们须要调用的那个方法体:

在方法调用之前。加入下面代码:

//Begin add for Header

String AUTH_PREFIX = "wsse";

String AUTH_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";

try{

SOAPElement wsSecHeaderElm = soapFactory.createElement("Security", AUTH_PREFIX, AUTH_NS);

SOAPElement userNameTokenElm = soapFactory.createElement("UsernameToken",AUTH_PREFIX, AUTH_NS);

SOAPElement userNameElm = soapFactory.createElement("Username",AUTH_PREFIX, AUTH_NS);

SOAPElement passwdElm = soapFactory.createElement("Password",AUTH_PREFIX, AUTH_NS);

passwdElm.setAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");

userNameElm.addTextNode("vend_bmc01");

passwdElm.addTextNode("mediatek");

userNameTokenElm.addChildElement(userNameElm);

userNameTokenElm.addChildElement(passwdElm);

wsSecHeaderElm.addChildElement(userNameTokenElm);

SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(wsSecHeaderElm);

soapHeaderElement.setMustUnderstand(true);

_call.addHeader(soapHeaderElement);

}catch(Exception e)

{

e.printStackTrace();

}

//End add for Header

===》call method

java.lang.Object _resp = _call.invoke(XXXX);

原理非常easy。 加上相似xml 的头, _call_addHeader

加上之后。再触发方法 _call.invoke



推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 开发笔记:读《分布式一致性原理》JAVA客户端API操作2
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了读《分布式一致性原理》JAVA客户端API操作2相关的知识,希望对你有一定的参考价值。创 ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因
    本文介绍了解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因。其中包括修改包名、解决service name重复、处理jar包冲突和添加maven依赖等解决方案。同时推荐了一个人工智能学习网站,该网站内容通俗易懂,风趣幽默,值得一看。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 开发笔记:图像识别基于主成分分析算法实现人脸二维码识别
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图像识别基于主成分分析算法实现人脸二维码识别相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
涵涵幸福2010_759
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有