package com.sap.document.sap.soap.functions.mc_style_A001;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
/**
*
* @author outofmemory.cn
*
* <soapenv:Header>
<SessionType>***</web:SessionType>
<PasswordText>***</web:PasswordText>
<UsernameToken>***</web:UsernameToken>
</soapenv:Header>
*/
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext smc) {
Boolean isRequest = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
QName usernameQName = new QName("命名空间", "UsernameToken","siebelwsh");
QName passwordQName = new QName("命名空间", "PasswordText","siebelwsh");
QName sessionTypeQName = new QName("命名空间", "SessionType","siebelwsh");
if (isRequest.booleanValue()) {
try {
SOAPMessage soapMsg = smc.getMessage();
SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
SOAPHeader soapHeader = soapEnv.getHeader();
soapEnv.addNamespaceDeclaration("web", "urn:sap-com:document:sap:soap:functions:mc-style");
// 注意:其实这里<web:SessionType>***</web:SessionType> 的web可以相当于是一个变量 xmlns:web="http://***.com/webservices [urn:sap-com:document:sap:soap:functions:mc-style]"
//if no header, add one
if (soapHeader == null) {
soapHeader = soapEnv.addHeader();
}
String username = "****";
String password = "***";
//添加SiebelUsernameToken
SOAPHeaderElement usernameHeaderElement = soapHeader.addHeaderElement(usernameQName);
usernameHeaderElement.addTextNode(username);
//添加SiebelPasswordText
SOAPHeaderElement passwordHeaderElement = soapHeader.addHeaderElement(passwordQName);
passwordHeaderElement.addTextNode(password);
//添加SiebelSessionType
SOAPHeaderElement SessionTypeHeaderElement = soapHeader.addHeaderElement(sessionTypeQName);
SessionTypeHeaderElement.addTextNode("None");
soapMsg.saveChanges();
try {
soapMsg.writeTo(System.out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SOAPException e) {
e.printStackTrace();
//logger.warn(e.getMessage());
}
}else{
try {
SOAPMessage soapMessage = smc.getMessage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
soapMessage.writeTo(baos);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return isRequest;
}
public Set getHeaders() {
//throw new UnsupportedOperationException("Not supported yet.");
return null;
}
public boolean handleFault(SOAPMessageContext context) {
//throw new UnsupportedOperationException("Not supported yet.");
return true;
}
public void close(MessageContext context) {
//throw new UnsupportedOperationException("Not supported yet.");
}
/**调用方法
*/
public static void main(String args[]){
HeaderHandlerResolver handlerResolver = new HeaderHandlerResolver();
Service service = Service.create(new QName("urn:sap-com:document:sap:soap:functions:mc-style", "ZHTERPPM_DATA_001"));//得到service
service.setHandlerResolver(handlerResolver);//回写heard消息验证用户名密码
service.addPort(new QName("urn:sap-com:document:sap:soap:functions:mc-style", "binding"),javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, "http://HTERPER3.hongta.com:8000/sap/bc/srt/rfc/sap/zht_erppm_data_001/201/zhterppm_data_001/binding"); // service.setHandlerResolver(handlerResolver);
ZHTERPPMDATA001 queryService1 =(ZHTERPPMDATA001) service.getPort(new QName("urn:sap-com:document:sap:soap:functions:mc-style", "binding"), ZHTERPPMDATA001.class);
TableOfZpmBasic ss = queryService1.zErppmB002("2017.01.01");//调用接口方法
List<ZpmBasic> zpmBasic = ss.getItem();
for(ZpmBasic zpmbasic :zpmBasic){
System.out.println(">>>>>>>>>>>>"+zpmbasic.getWerks());
}
}
}
CXF 调用ASP服务器端通过用户名密码验证
1星 需积分: 48 75 浏览量
2017-11-14
13:07:39
上传
评论
收藏 2KB ZIP 举报
韩冰李
- 粉丝: 1
- 资源: 13
最新资源
- 电力场景安全帽检测数据集VOC+YOLO格式295张2类别.7z
- MISC图片隐写MISC图片隐写MISC图片隐写MISC图片隐写MISC图片隐写.txt
- 七维大脑原理:探索人类心智的多元维度.txt
- 电力场景设备漏油检测数据集VOC+YOLO格式338张1类别.7z
- 基于yolov8+pyqt5实现精美界面支持图片视频和摄像检测源码.zip
- 用C语言为母亲节献上一份特别的祝福.zip
- LCD1602液晶显示屏的深入探索与实用指南.zip
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈