CPI SOAP接收器PayLoad元素不适合BindingOperation的消息部分。

2020-08-26 13:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的问题类似于这些问题

错误:CPI SOAP标头

SAP CPI SOAP接收器出现错误,但可以在SOAP UI中使用

使用SAP HCI异常调用SOAP Web服务

我试图向Web服务发送一条消息,其中目标系统使用下一个WSDL:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
   
     
       
         
           
           
         
       
     
   
   
     
     
     
     
     
     
   
   
     
   
   
     
       
       
       
     
   
   
     
     
       
       
         
       
       
         
       
     
   
   
     
       
     
   
 
 

我的SOAP接收器通道具有下一个配置:

在我的iFlow中,在使用请求回复组件之前,我创建了一个Groovy脚本来进行映射:

 def消息processData(消息){


 def生成器;
 def outxml;
 def xml = message.getBody(java.lang.String);

 def xmlPath = new XmlSlurper()。parseText(xml);


 字符串orgVtas = xmlPath.depthFirst()。findAll(){it.name()=='VKORG'}
 字符串fechaIni = xmlPath.depthFirst()。findAll(){it.name()=='FEC_INI'}
 字符串fechaFin = xmlPath.depthFirst()。findAll(){it.name()=='FEC_FIN'}
 字符串descuento = xmlPath.depthFirst()。findAll(){it.name()=='ENTERO1'}
 字符串cantidadPtos = xmlPath.depthFirst()。findAll(){it.name()=='CANTIDAD1'}
 字符串textDescto = xmlPath.depthFirst()。findAll(){it.name()=='REFERENCIA1'}

 def xmlWriter =新的StringWriter()
     def xmlMarkup =新的MarkupBuilder(xmlWriter)
    
    //建立输入XML
     xmlMarkup.'p6:parametrosRedencionPuntos'(" xmlns:p6":" urn:INT065Controllerwsdl"){
                             'p6:id_organizacion_ventas'(orgVtas)
 'p6:fechaInicio'(fechaIni)
 'p6:fechaFinal'(fechaFin)
 'p6:textDescuento'(textDescto)
 'p6:id_descuento'(descuento)
 'p6:cantidadPuntos'(cantidadPtos)
     }


    //身体
     字符串结果= xmlWriter.toString();
 结果= result.replaceAll('\\]','').replaceAll('\\ [','');
 message.setBody(结果)

   
   //设置标题
     message.setHeader(" CamelHttpMethod"," POST");
     message.setHeader(" SOAPAction"," http://loyalty.mxg33k.com/iNT065/quote?ws=1");
     message.setHeader(" Content-Type"," application/soap + xml");
     message.setHeader(" operationName"," parametrosRedencionPuntos");
     message.setHeader(" operationNamespace"," urn:INT065Controllerwsdl");

 返回消息;
 

我设置标题的原因是因为我正在测试不同的建议。

但是,当我测试界面时,会向我显示错误:

 java.lang.IllegalArgumentException:PayLoad元素不适合BindingOperation的消息部分。

 请检查BindingOperation和PayLoadMessage.Message处理日志:

 开始时间=星期五12月20日05:35:10.987 UTC 2019

 StopTime =星期五12月20日05:35:11.116 UTC 2019

 总体状态=处理中

 MessageGuid = AF38XY6wcrpYqoG5r1puXWOVpH_w

 ChildCount = 0

 儿童数= 15

 上下文名称= INT043_065_RET_C4C_LOY_Replica_de_Parametros_de_Redencion_de_Puntos

 CorrelationId = AF38XY7-0PhwigSK-mximLZmtq3w

 IntermediateError = true

 LastError = java.lang.IllegalArgumentException:PayLoad元素不适合BindingOperation的消息部分。 请检查BindingOperation和PayLoadMessage。

 LastErrorModelStepId = MessageFlow_573

 节点= vsa7079780

 PreviousComponentName = CPI_e250024

 ProcessId = b362530d2fc7a0514a41be98315ab1ac958d00ec

 ReceiverId = C4C_WS_SOAP

 SenderId = RETAIL_CC_SOAP_043_RetailToC4C_Snd

 TransactionId = c9e8a47490f5479d8c851e4e116fbf8c

 ReceiverIds [C4C_WS_SOAP] 

有什么想法,我做错了什么吗?

谢谢你。

最诚挚的问候。

ERVA。

(205.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的问题类似于这些问题

错误:CPI SOAP标头

SAP CPI SOAP接收器出现错误,但可以在SOAP UI中使用

使用SAP HCI异常调用SOAP Web服务

我试图向Web服务发送一条消息,其中目标系统使用下一个WSDL:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
   
     
       
         
           
           
         
       
     
   
   
     
     
     
     
     
     
   
   
     
   
   
     
       
       
       
     
   
   
     
     
       
       
         
       
       
         
       
     
   
   
     
       
     
   
 
 

我的SOAP接收器通道具有下一个配置:

在我的iFlow中,在使用请求回复组件之前,我创建了一个Groovy脚本来进行映射:

 def消息processData(消息){


 def生成器;
 def outxml;
 def xml = message.getBody(java.lang.String);

 def xmlPath = new XmlSlurper()。parseText(xml);


 字符串orgVtas = xmlPath.depthFirst()。findAll(){it.name()=='VKORG'}
 字符串fechaIni = xmlPath.depthFirst()。findAll(){it.name()=='FEC_INI'}
 字符串fechaFin = xmlPath.depthFirst()。findAll(){it.name()=='FEC_FIN'}
 字符串descuento = xmlPath.depthFirst()。findAll(){it.name()=='ENTERO1'}
 字符串cantidadPtos = xmlPath.depthFirst()。findAll(){it.name()=='CANTIDAD1'}
 字符串textDescto = xmlPath.depthFirst()。findAll(){it.name()=='REFERENCIA1'}

 def xmlWriter =新的StringWriter()
     def xmlMarkup =新的MarkupBuilder(xmlWriter)
    
    //建立输入XML
     xmlMarkup.'p6:parametrosRedencionPuntos'(" xmlns:p6":" urn:INT065Controllerwsdl"){
                             'p6:id_organizacion_ventas'(orgVtas)
 'p6:fechaInicio'(fechaIni)
 'p6:fechaFinal'(fechaFin)
 'p6:textDescuento'(textDescto)
 'p6:id_descuento'(descuento)
 'p6:cantidadPuntos'(cantidadPtos)
     }


    //身体
     字符串结果= xmlWriter.toString();
 结果= result.replaceAll('\\]','').replaceAll('\\ [','');
 message.setBody(结果)

   
   //设置标题
     message.setHeader(" CamelHttpMethod"," POST");
     message.setHeader(" SOAPAction"," http://loyalty.mxg33k.com/iNT065/quote?ws=1");
     message.setHeader(" Content-Type"," application/soap + xml");
     message.setHeader(" operationName"," parametrosRedencionPuntos");
     message.setHeader(" operationNamespace"," urn:INT065Controllerwsdl");

 返回消息;
 

我设置标题的原因是因为我正在测试不同的建议。

但是,当我测试界面时,会向我显示错误:

 java.lang.IllegalArgumentException:PayLoad元素不适合BindingOperation的消息部分。

 请检查BindingOperation和PayLoadMessage.Message处理日志:

 开始时间=星期五12月20日05:35:10.987 UTC 2019

 StopTime =星期五12月20日05:35:11.116 UTC 2019

 总体状态=处理中

 MessageGuid = AF38XY6wcrpYqoG5r1puXWOVpH_w

 ChildCount = 0

 儿童数= 15

 上下文名称= INT043_065_RET_C4C_LOY_Replica_de_Parametros_de_Redencion_de_Puntos

 CorrelationId = AF38XY7-0PhwigSK-mximLZmtq3w

 IntermediateError = true

 LastError = java.lang.IllegalArgumentException:PayLoad元素不适合BindingOperation的消息部分。 请检查BindingOperation和PayLoadMessage。

 LastErrorModelStepId = MessageFlow_573

 节点= vsa7079780

 PreviousComponentName = CPI_e250024

 ProcessId = b362530d2fc7a0514a41be98315ab1ac958d00ec

 ReceiverId = C4C_WS_SOAP

 SenderId = RETAIL_CC_SOAP_043_RetailToC4C_Snd

 TransactionId = c9e8a47490f5479d8c851e4e116fbf8c

 ReceiverIds [C4C_WS_SOAP] 

有什么想法,我做错了什么吗?

谢谢你。

最诚挚的问候。

ERVA。

(205.0 kB)
付费偷看设置
发送
1条回答
SAP砖家
1楼 · 2020-08-26 14:03.采纳回答

嗨,

我解决了我的问题:

  1. 我使用Wizdler扩展浏览器来使用Web服务。 在Wizdler中,我复制了标头参数

然后我更新了Groovy脚本函数:

//设置标题
     message.setHeader(" CamelHttpMethod"," POST");
     message.setHeader(" SOAPAction"," urn:INT065Controllerwsdl#parametrosRedencionPuntos");
     message.setHeader(" Content-Type"," text/xml; charset = \" utf-8 \"");
     message.setHeader(" operationName"," parametrosRedencionPuntos");
     message.setHeader(" operationNamespace"," urn:INT065Controllerwsdl"); 

此外,我按照Wizdler的显示方式修改了布局请求:

 <信封xmlns =" http://schemas.xmlsoap.org/soap/envelope/">
     <身体>
         
              [字符串] 
              [dateTime] 
              [dateTime] 
              [字符串] 
              [int] 
              [float] 
         
     
 
 

我的Groovy脚本代码(我删除了前缀):

//构建输入XML
     xmlMarkup.'parametrosRedencionPuntos'(" xmlns":" urn:INT065Controllerwsdl"){
                             'id_organizacion_ventas'(orgVtas)
 'fechaInicio'(fechaIni)
 'fechaFinal'(fechaFin)
 'textDescuento'(textDescto)
 'id_descuento'(descuento)
 'cantidadPuntos'(cantidadPtos)
     }
 

在我的通信通道(SOAP接收器)中,我更改了一些参数,清空了指向WSDL,Service,EndPoint,Operation Name参数的URL。

谢谢。

ERVA。

一周热门 更多>