soap:Head 自定义命名空间:xw ,使用handler处理消息头
<soap:Head>
<xw:arg0 ></xw:arg0>
</soap:Head>
1.配置Handler
<jaxws:endpoint id="queryUserAddr" address="/queryUserAddr" implementorClass="cn.interfaces.IQueryUser">
<jaxws:implementor>
<bean id="queryUserImpl" class="cn.interfaces.impl.QueryUserImpl">
</bean>
</jaxws:implementor>
<jaxws:handlers>
<bean class="cn.interfaces.impl.PreHeaderHandler"></bean>
</jaxws:handlers>
</jaxws:endpoint>
2.Handler
//<soapenv:Header>里面的元素添加命名空间
public class PreHeaderHandler implements SOAPHandler<SOAPMessageContext> {
public PreHeaderHandler(){
System.out.println("用户验证成功........................");
}
public boolean handleMessage(SOAPMessageContext context) {
Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
QName usernameQName = new QName("http://cc.haoren.com/services", "UsernameToken","xw");
if (isRequest) {
try {
SOAPMessage soapMsg = context.getMessage();
SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
SOAPHeader soapHeader = soapEnv.getHeader();
soapEnv.addNamespaceDeclaration("web", "http://cc.haoren.com/services");
//if no header, add one
if (soapHeader == null) {
soapHeader = soapEnv.addHeader();
}
String username = "xxx";
String password = "xxxx";
//添加UsernameToken
SOAPHeaderElement usernameHeaderElement = soapHeader.addHeaderElement(usernameQName);
usernameHeaderElement.addTextNode(username);
soapMsg.saveChanges();
} catch (SOAPException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
public Set<QName> getHeaders() {
return null;
}
public boolean handleFault(SOAPMessageContext context) {
return false;
}
public void close(MessageContext context) {}
}
NodeList list=soapBody.getChildNodes();
int count=list.getLength();
Node node=null;
for(int i=0;i<count;i++) {
node=list.item(i);
node.setPrefix("xx");
}
分享到:
相关推荐
</soapenv:Envelope> <!-- SOAP Response --> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://example.com/service"> <soapenv:Header/> <soapenv:Body> <ser...
为了发送这个SOAP请求并接收响应,你可以使用各种编程语言的库,例如Python的suds库,Java的JAX-WS,或是.NET框架中的System.Web.Services命名空间。这些库可以帮助你构建SOAP请求,处理响应,并解析返回的XML数据。...
服务端提供的WebService的地址、命名空间、操作名、参数名等信息都可以在document.properties文件中进行配置。 2. 客户端开发 客户端开发可以使用HTTP协议头传递或SOAP Header传递两种方式来访问ESB。在HTTP协议头...
这里的`urn:example`和`yourOperation`需要替换为实际的命名空间和服务操作。 2. **发送SOAP请求**:使用Web服务客户端库,如Java的JAX-WS或.NET的SOAP Toolkit,可以将这个XML请求通过HTTP POST方法发送到Web服务...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而SOAP(Simple Object Access Protocol)是一种基于XML的协议,常用于构建Web服务。...String soapRequest = "<soapenv:Envelope xmlns:soapenv=\...
在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API... String soapRequestBody = "<soapenv:Envelope xmlns:soapenv=\...
</soapenv:Envelope> ``` 2. **配置HTTPClient**:接着,我们需要使用Apache的HTTPClient库来发送这个SOAP请求。首先,引入HTTPClient的相关依赖,确保项目中包含httpclient和httpcore的jar包。然后,创建...
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.example.org/webService"> <soapenv:Header/> <soapenv:Body> <web:calculate> <!-- 具体参数 --> ...
+ "</soapenv:Envelope>"; } ``` 最后,当服务器返回响应时,我们在订阅的回调中解析XML响应,根据业务需求进行后续处理。注意,由于SOAP响应通常也是XML格式,可能需要使用如`org.xmlpull.v1.XmlPullParser`或第...
</soapenv:Envelope> ``` **二、Java与SOAP** 在Java中,使用**JAX-WS (Java API for XML Web Services)**框架可以方便地创建和消费SOAP服务。JAX-WS提供了一种声明式的方式来定义服务接口和服务实现,并自动生成...
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同的应用程序之间进行通信和数据交换。在本文中,我们将深入探讨Web服务的基础知识,包括客户端和服务器端的交互、参数传递、以及如何使用JDBC...
JavaScript调用WebService是一种常见的跨平台通信方式,尤其在Web应用程序中,它允许前端代码与后端服务进行数据交互。本文将详细介绍如何使用JavaScript调用基于Java的WebService(使用Xfire框架)以及调用基于.NET...
+ "</soapenv:Envelope>"; httpPost.setEntity(new StringEntity(soapRequestBody, "UTF-8")); httpPost.setHeader("Content-Type", "text/xml; charset=UTF-8"); // 执行请求 CloseableHttpResponse response...
在这个例子中,`SoapResponse`是自定义的响应模型类,用于解析服务器返回的SOAP响应XML。 然后,创建一个OkHttp的拦截器,用于设置SOAPAction头信息,因为SOAP请求需要这个头来识别请求类型: ```java public class...
这通过`Service.create()`方法完成,传入WSDL(Web Services Description Language)URL和QName( Qualified Name)来定义服务的命名空间和本地名称。例如: ```java String ns = "http://ws.sitech.com"; String ...
将CXF的库添加到你的项目类路径中,可以通过Maven或Gradle依赖管理来实现。 **2. 创建Web服务接口** 使用Apache CXF,你需要定义一个Java接口,这个接口将作为你的Web服务的契约。接口中的方法将成为Web服务的端点...
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.example.com"> <soapenv:Header/> <soapenv:Body> <web:yourMethod> <!--Your input parameters ...
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.reflect.InvocationTargetException faultActor: faultNode: faultDetail: {...
**WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...