2020-09-06 12:12发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个要求在SOAP标头中传递动态密码(密码+当前时间戳),时间戳以及用户名和源系统(静态值)。
场景:Web服务的代理
>我使用的是肥皂接收器适配器,因为我必须通过代理/防火墙
Header参数的数据格式应为以下格式?
标题:
用户名:ABCDEF
密码:md5(123456 + TIMESTAMP),例如:123456201806151224350001
TIMESTAMP:201806151224350001
嗨Ayush,
您可以使用用户定义的功能(设置适配器特定的消息属性)并将其映射到消息映射器中的根节点,该映射器实际上动态地传递Header参数。
在用户定义的功能(设置适配器特定的消息属性)中,您可以适当地传递变量。
例如:
DynamicConfiguration conf2 =(DynamicConfiguration)container.getTransformationParameters()。get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key3 = DynamicConfigurationKey.create(" http://sap.com/xi/ XI/System/SOAP "," XAmzDate");
conf2.put(key3,dateStamp);
下面是生成MD5密码的源代码,您可以将其输出与当前时间戳连接起来。
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
公共类MD5 {公共静态字符串getMd5(字符串输入)
{
尝试{
MessageDigest md = MessageDigest.getInstance(" MD5");
byte [] messageDigest = md.digest(input.getBytes());
no = new BigInteger(1,messageDigest);
字符串hashtext = no.toString(16); 而(hashtext.length()<32)
hashtext =" 0" + hashtext; }返回哈希文本;
}
捕获(NoSuchAlgorithmException e)
抛出新的RuntimeException(e);
公共静态void main(String args [])抛出NoSuchAlgorithmException
字符串s =""; System.out.println("由MD5生成的HashCode为:" + getMd5(s));
最终,在SOAP接收器通信通道中,确保设置了ASMA并正确提供了标头名称。
感谢和问候-Rajesh PS
最多设置5个标签!
嗨Ayush,
您可以使用用户定义的功能(设置适配器特定的消息属性)并将其映射到消息映射器中的根节点,该映射器实际上动态地传递Header参数。
在用户定义的功能(设置适配器特定的消息属性)中,您可以适当地传递变量。
例如:
DynamicConfiguration conf2 =(DynamicConfiguration)container.getTransformationParameters()。get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key3 = DynamicConfigurationKey.create(" http://sap.com/xi/ XI/System/SOAP "," XAmzDate");
conf2.put(key3,dateStamp);
下面是生成MD5密码的源代码,您可以将其输出与当前时间戳连接起来。
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
公共类MD5 {公共静态字符串getMd5(字符串输入)
{
尝试{
MessageDigest md = MessageDigest.getInstance(" MD5");
byte [] messageDigest = md.digest(input.getBytes());
BigInteger上的no = new BigInteger(1,messageDigest);
字符串hashtext = no.toString(16); 而(hashtext.length()<32)
{
hashtext =" 0" + hashtext; }返回哈希文本;
}
捕获(NoSuchAlgorithmException e)
{
抛出新的RuntimeException(e);
}
}
公共静态void main(String args [])抛出NoSuchAlgorithmException
{
字符串s =""; System.out.println("由MD5生成的HashCode为:" + getMd5(s));
}
}
最终,在SOAP接收器通信通道中,确保设置了ASMA并正确提供了标头名称。
感谢和问候-Rajesh PS
一周热门 更多>