0 0

WS-Security客户端调用webservice出错5

org.codehaus.xfire.fault.XFireFault: WSS4JInHandler: Request does not contain required Security header
	at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)
	at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)
	at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)
	at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)
	at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
	at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
	at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
	at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
	at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
	at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
	at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
	at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
	at org.codehaus.xfire.client.Client.invoke(Client.java:336)
	at org.codehaus.xfire.client.Client.invoke(Client.java:368)
	at com.cinwa.creditnet.webservice.impl.RegisterServiceImpl.register(RegisterServiceImpl.java:83)
	at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:59)
	at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:320)
	at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:86)
	at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:134)
	at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:109)
	at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
	at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
	at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
	at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
	at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
	at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
	at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:99)
	at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163)
	at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208)
	at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:259)
	at com.caucho.server.port.TcpConnection.run(TcpConnection.java:363)
	at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
	at com.caucho.util.ThreadPool.run(ThreadPool.java:423)

我用的服务器是resin3.1 客户端的包和服务器端的包都一样
下面是我的测试服务端
 RegisterServiceClient client = new RegisterServiceClient();
        
		//create a default service endpoint
        RegisterServicePortType service = client.getRegisterServiceHttpPort();
        //获取访问客户端的对象
        Client cl = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient(); 
         //添加流模型和DOM模型转换的Handler
         cl.addOutHandler(new DOMOutHandler()); 
         
         //通过属性对象的设置,往soap头中添加用户名和密码的凭证
         Properties properties = new Properties();
         //动作
         properties.setProperty(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);
         //密码类型
         properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
         //指定用户
         properties.setProperty(WSHandlerConstants.USER,"client");
         //密码回调类
         properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, UtPasswordHandler.class.getName());
   
         cl.addOutHandler(new WSS4JOutHandler(properties));

我已经加了outhandler了,为什么它会报这个错误?
这是抓取的报文
<?xml version="1.0" encoding="UTF-8"?>
POST //services/RegisterService HTTP/1.1 SOAPAction: "" Content-Type:
text/xml; charset=UTF-8 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.0; XFire Client +http://xfire.codehaus.org) Host:
192.168.1.226:8888 Expect: 100-continue Content-Length: 1872

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soap:Header>
		<wsse:Security soap:mustUnderstand="1"
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
			<wsse:UsernameToken wsu:Id="UsernameToken-1111763"
				xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
				xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
				<wsse:Username
					xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
					21315
				</wsse:Username>
				<wsse:Password
					Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
					xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
					5qG5xquAXb4vih7u1VcSX1pi1jE=
				</wsse:Password>
				<wsse:Nonce
					xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
					LttlFrqI+lG17f1VtcOb0Q==
				</wsse:Nonce>
				<wsu:Created
					xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
					2008-08-28T09:03:57.531Z
				</wsu:Created>
			</wsse:UsernameToken>
		</wsse:Security>
	</soap:Header>
	<soap:Body>
		<ns1:register
			xmlns:ns1="http://webservice.creditnet.cinwa.com">
			<ns1:in0>123</ns1:in0>
			<ns1:in1>123</ns1:in1>
			<ns1:in2>123</ns1:in2>
			<ns1:in3>123.0</ns1:in3>
			<ns1:in4>123</ns1:in4>
			<ns1:in5>123</ns1:in5>
			<ns1:in6>123</ns1:in6>
			<ns1:in7>123</ns1:in7>
			<ns1:in8>123</ns1:in8>
			<ns1:in9>123</ns1:in9>
			<ns1:in10>123</ns1:in10>
			<ns1:in11>123</ns1:in11>
			<ns1:in12>123.0</ns1:in12>
			<ns1:in13>123</ns1:in13>
			<ns1:in14>123</ns1:in14>
			<ns1:in15>123</ns1:in15>
			<ns1:in16>123</ns1:in16>
			<ns1:in17>123</ns1:in17>
			<ns1:in18>123</ns1:in18>
			<ns1:in19>123</ns1:in19>
		</ns1:register>
	</soap:Body>
</soap:Envelope>

已经解决!!服务端配置文件写错了-_-!!
SOA 
2008年8月28日 19:17
目前还没有答案

相关推荐

    纯java调用ws-security+CXF实现的webservice安全接口

    本文将深入探讨如何使用CXF框架结合ws-security标准来实现对Java客户端调用Web服务的安全接口。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务,而ws-security(Web Services Security)则是用于...

    cxf+ws-security-JAR

    综上所述,"cxf+ws-security-JAR"是针对Web服务安全调用的解决方案,通过Apache CXF和WS-Security标准,为Web服务提供了强大的安全保障,确保了敏感数据的传输安全和用户身份的有效验证。这个JAR包很可能包含了一些...

    jax-ws实现webservice调用

    同时,可以通过SSL/TLS、WS-Security等机制增强Web服务的安全性。 ### 7. 性能优化 为了提高性能,可以启用HTTP连接池、缓存WSDL、使用MTOM(Message Transmission Optimization Mechanism)进行二进制数据传输等...

    jax-ws WebService客户端与服务端工程.rar

    通过这个"jax-ws WebService客户端与服务端工程",你可以实践创建一个简单的JAX-WS服务,了解服务端的部署,以及客户端如何通过WSDL找到服务并进行调用。同时,还可以学习到JAXB在数据转换中的作用,以及如何处理Web...

    cxf客户端调用webservice所需jar包

    它支持多种Web服务标准,如SOAP、WSDL、WS-Security等,并且提供了JAX-WS和JAX-RS实现。对于客户端调用,CXF允许开发者通过简单API直接与Web服务交互,无需关心底层通信细节。 在标题和描述中提到的"cx

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    java axis 调用webservice服务端

    运行该工具并指定WSDL文件路径,它将自动生成Java客户端类,这些类包含了调用WebService的方法。 2. **配置连接信息**:在生成的stub类中,我们需要设置服务端的URL以及可能的SOAP头信息。这些信息通常包含在服务的...

    WebService:Axis客户端调用需要身份验证的CXF服务

    3. **WS-Security配置**:如果CXF服务使用了WS-Security,如UsernameToken或X.509 Token,那么在Axis客户端端也需要相应配置。这可能涉及到创建和添加WSS4JInInterceptor和WSS4JOutInterceptor,以处理安全令牌。 4...

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

    2. **配置客户端处理程序**:如果使用WS-Security,需要在客户端的 AxisClient 或 ServiceClient 实例中添加适当的处理程序,如WSS4J处理程序,这些处理程序负责在请求中添加必要的安全令牌。 3. **发送安全请求**...

    JAX-WS开发部署WebService

    【JAX-WS开发部署WebService】是Web服务开发的一个重要主题,主要涉及到使用Java API for XML Web Services(JAX-WS)创建和部署基于SOAP的Web服务。JAX-WS是一种标准的、Java平台上的API,它使得开发人员能够轻松地...

    java调用webservice工程

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

    java 调用 webService工具类

    Java开发者通常会根据WSDL文件生成客户端代码,然后使用这些代码来调用WebService。JAX-WS提供`wsimport`工具,可以自动生成对应的客户端 stub 类。 5. **工具类设计**: 这个名为`javaCallwebService`的工具类很...

    商业编程-源码-在VC中调用 WebService.zip

    1. **SOAP协议**:在VC中调用WebService通常涉及到使用简单对象访问协议(SOAP),这是一种XML格式的消息传输协议,用于在Web服务和客户端之间传递数据。SOAP消息通过HTTP协议发送,这使得它可以在Internet上跨平台...

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

    3. "java 调用webservice的各种方法总结 - 比较详细且简单的.mht":这个文件应该汇总了多种Java调用Web服务的方法,比如使用JAX-WS、Apache CXF或Axis2等库,可能包括代码示例和优缺点分析。 4. "java调用...

    java调用webservice接口方法.rar

    Java中调用WebService主要依赖于JAX-WS(Java API for XML Web Services)框架。JAX-WS提供了一种简单的编程模型,使得开发者可以方便地创建和消费SOAP WebServices。 4. **创建WebService客户端** 在Java中,...

    C#调用JavaWebService(客户端)

    本主题将深入探讨如何使用C#作为客户端来调用Java编写的WebService。WebSocket服务提供了平台无关的通信方式,使得不同编程语言间的数据交换变得可能。下面我们将详细讨论这个过程。 首先,了解WebService的基本...

    java调用webservice(20211103125800).rar

    JAX-WS通过Wsimport工具从WSDL文件生成Java客户端Stubs,使得开发者可以像调用本地方法一样调用WebService。以下是一般的步骤: 1. 使用Wsimport工具从WSDL生成Java客户端代码。 2. 在生成的客户端代码中,找到服务...

    webservice之jax-ws

    开发者可以使用诸如Apache CXF、Metro等开源框架来支持JAX-WS的开发,这些框架提供了更多的功能,如WS-Security、WS-Policy等扩展,同时简化了开发过程。 8. **示例** 在提供的链接...

    Webservice之JaxWs服务端和客户端实现

    - **安全性**:可以通过添加安全层(如SSL/TLS)和身份验证机制(如WS-Security)来保护Web服务。 - **消息编码**:JAX-WS支持多种消息编码风格,包括SOAP 1.1/1.2,以及RESTful风格的HTTP请求。 - **服务注册**:...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    此外,它还支持WS-*规范,如WS-Security、WS-ReliableMessaging等,这些规范增强了Web服务的安全性和可靠性。 **Web服务的实现**通常分为两部分:服务端(Server-side)和客户端(Client-side)。服务端创建并暴露...

Global site tag (gtag.js) - Google Analytics