-
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>
已经解决!!服务端配置文件写错了-_-!!2008年8月28日 19:17
目前还没有答案
相关推荐
本文将深入探讨如何使用CXF框架结合ws-security标准来实现对Java客户端调用Web服务的安全接口。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务,而ws-security(Web Services Security)则是用于...
综上所述,"cxf+ws-security-JAR"是针对Web服务安全调用的解决方案,通过Apache CXF和WS-Security标准,为Web服务提供了强大的安全保障,确保了敏感数据的传输安全和用户身份的有效验证。这个JAR包很可能包含了一些...
同时,可以通过SSL/TLS、WS-Security等机制增强Web服务的安全性。 ### 7. 性能优化 为了提高性能,可以启用HTTP连接池、缓存WSDL、使用MTOM(Message Transmission Optimization Mechanism)进行二进制数据传输等...
通过这个"jax-ws WebService客户端与服务端工程",你可以实践创建一个简单的JAX-WS服务,了解服务端的部署,以及客户端如何通过WSDL找到服务并进行调用。同时,还可以学习到JAXB在数据转换中的作用,以及如何处理Web...
它支持多种Web服务标准,如SOAP、WSDL、WS-Security等,并且提供了JAX-WS和JAX-RS实现。对于客户端调用,CXF允许开发者通过简单API直接与Web服务交互,无需关心底层通信细节。 在标题和描述中提到的"cx
Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...
运行该工具并指定WSDL文件路径,它将自动生成Java客户端类,这些类包含了调用WebService的方法。 2. **配置连接信息**:在生成的stub类中,我们需要设置服务端的URL以及可能的SOAP头信息。这些信息通常包含在服务的...
3. **WS-Security配置**:如果CXF服务使用了WS-Security,如UsernameToken或X.509 Token,那么在Axis客户端端也需要相应配置。这可能涉及到创建和添加WSS4JInInterceptor和WSS4JOutInterceptor,以处理安全令牌。 4...
2. **配置客户端处理程序**:如果使用WS-Security,需要在客户端的 AxisClient 或 ServiceClient 实例中添加适当的处理程序,如WSS4J处理程序,这些处理程序负责在请求中添加必要的安全令牌。 3. **发送安全请求**...
【JAX-WS开发部署WebService】是Web服务开发的一个重要主题,主要涉及到使用Java API for XML Web Services(JAX-WS)创建和部署基于SOAP的Web服务。JAX-WS是一种标准的、Java平台上的API,它使得开发人员能够轻松地...
总结,Java调用WebService工程涉及到的知识点包括JAX-WS和JAX-RS的使用、WebService客户端的创建、服务的部署和调用、HTTP客户端的使用以及安全和异常处理策略。通过这些技术,Java应用程序能够灵活地与其他系统进行...
Java开发者通常会根据WSDL文件生成客户端代码,然后使用这些代码来调用WebService。JAX-WS提供`wsimport`工具,可以自动生成对应的客户端 stub 类。 5. **工具类设计**: 这个名为`javaCallwebService`的工具类很...
1. **SOAP协议**:在VC中调用WebService通常涉及到使用简单对象访问协议(SOAP),这是一种XML格式的消息传输协议,用于在Web服务和客户端之间传递数据。SOAP消息通过HTTP协议发送,这使得它可以在Internet上跨平台...
3. "java 调用webservice的各种方法总结 - 比较详细且简单的.mht":这个文件应该汇总了多种Java调用Web服务的方法,比如使用JAX-WS、Apache CXF或Axis2等库,可能包括代码示例和优缺点分析。 4. "java调用...
Java中调用WebService主要依赖于JAX-WS(Java API for XML Web Services)框架。JAX-WS提供了一种简单的编程模型,使得开发者可以方便地创建和消费SOAP WebServices。 4. **创建WebService客户端** 在Java中,...
本主题将深入探讨如何使用C#作为客户端来调用Java编写的WebService。WebSocket服务提供了平台无关的通信方式,使得不同编程语言间的数据交换变得可能。下面我们将详细讨论这个过程。 首先,了解WebService的基本...
JAX-WS通过Wsimport工具从WSDL文件生成Java客户端Stubs,使得开发者可以像调用本地方法一样调用WebService。以下是一般的步骤: 1. 使用Wsimport工具从WSDL生成Java客户端代码。 2. 在生成的客户端代码中,找到服务...
开发者可以使用诸如Apache CXF、Metro等开源框架来支持JAX-WS的开发,这些框架提供了更多的功能,如WS-Security、WS-Policy等扩展,同时简化了开发过程。 8. **示例** 在提供的链接...
- **安全性**:可以通过添加安全层(如SSL/TLS)和身份验证机制(如WS-Security)来保护Web服务。 - **消息编码**:JAX-WS支持多种消息编码风格,包括SOAP 1.1/1.2,以及RESTful风格的HTTP请求。 - **服务注册**:...
此外,它还支持WS-*规范,如WS-Security、WS-ReliableMessaging等,这些规范增强了Web服务的安全性和可靠性。 **Web服务的实现**通常分为两部分:服务端(Server-side)和客户端(Client-side)。服务端创建并暴露...