SAP Cloud Platform集成-Groovy提取httpresponseexception

2020-08-14 03:31发布

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

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


所有人,

按照标题的要求,是否仍要提取HttpResponseException?
在我的方案中(CPI-> LMS)我在CPI中收到HTTP 500内部服务器错误,并带有HTTP响应异常,但我想进行管理 此异常检索JSON有效负载。
我尝试直接用POSTMAN到LMS端点进行相同的调用

我收到json错误。
附件中 完整的流程,并在http500中使用JSON响应直接调用LMS端点。
流程。 png



提前感谢

(26.8 kB)

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

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


所有人,

按照标题的要求,是否仍要提取HttpResponseException?
在我的方案中(CPI-> LMS)我在CPI中收到HTTP 500内部服务器错误,并带有HTTP响应异常,但我想进行管理 此异常检索JSON有效负载。
我尝试直接用POSTMAN到LMS端点进行相同的调用

我收到json错误。
附件中 完整的流程,并在http500中使用JSON响应直接调用LMS端点。
流程。 png



提前感谢

(26.8 kB)
付费偷看设置
发送
5条回答
绿领巾童鞋
1楼-- · 2020-08-14 03:46

您好,克劳迪奥

Sriprasad Shivaram Bhat 的答案对于HTTP异常是正确的,但没有 在您的设置中无法正常工作,因为您使用了Successfactors适配器,其行为与普通的HTTP适配器相比有所不同。

如您所见(并在注释中提到),您不能调用" getResponseBody()"函数,因为Successfactors适配器不会引发AhcOperationFailedException,而不会引发没有此类方法的ODataProcessingException。 通过使用以下代码片段,您可以检查异常类支持哪些功能:

//internal
 导入com.sap.gateway.ip.core.customdev.util.Message
 导入groovy.xml.MarkupBuilder

 消息processData(消息){
 
    def sw =新的StringWriter()
    def builder =新的MarkupBuilder(sw)
    builder.methods {
       com.sap.gateway.core.ip.component.exception.ODataProcessingException.getMethods()。each {m->
          方法(m.toString())
       }
    }
  
    message.setBody(sw.toString())
    返回讯息
 } 

此调用的结果显示,没有函数可以返回HTML正文:

 
   公共静态com.sap.gateway.core.ip.component.exception.ODataProcessingException com.sap.gateway.core.ip.component.exception.ODataProcessingException.throwException(java.lang.String)
   公共静态com.sap.gateway.core.ip.component.exception.ODataProcessingException com.sap.gateway.core.ip.component.exception.ODataProcessingException.throwException(java.lang.String,java.lang.Throwable)  
   公共java.lang.String java.lang.Throwable.getMessage()
   公共java.lang.String java.lang.Throwable.getLocalizedMessage()
   公共同步的java.lang.Throwable java.lang.Throwable.getCause()
   公共同步的java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)
   公共java.lang.String java.lang.Throwable.toString()
   公共无效java.lang.Throwable.printStackTrace()
   公共无效java.lang.Throwable.printStackTrace(java.io.PrintStream)
   公共无效java.lang.Throwable.printStackTrace(java.io.PrintWriter)
   公共同步的java.lang.Throwable java.lang.Throwable.fillInStackTrace()
   公共java.lang.StackTraceElement [] java.lang.Throwable.getStackTrace()
   公共无效java.lang.Throwable.setStackTrace(java.lang.StackTraceElement [])
   公共最终同步的void java.lang.Throwable.addSuppressed(java.lang.Throwable)
   公共最终同步的java.lang.Throwable [] java.lang.Throwable.getSuppressed()
   公共最终本机java.lang.Class java.lang.Object.getClass()
   公共本机int java.lang.Object.hashCode()
   公共布尔java.lang.Object.equals(java.lang.Object)
   公共最终本机无效java.lang.Object.notify()
   公共最终本机无效java.lang.Object.notifyAll()
   公共最终本机无效java.lang.Object.wait(long)抛出java.lang.InterruptedException 
   公共最终无效java.lang.Object.wait(long,int)抛出java.lang.InterruptedException 
   公共最终void java.lang.Object.wait()抛出java.lang.InterruptedException 
 
 

因此,从我的角度来看,您只有两个选择:

  1. 与Successfactors适配器结合使用,并接受您不能从引发的异常访问HTML正文。
  2. 从Successfactors适配器切换到纯HTTP适配器。 然后,您可以进入身体,但是将失去Successfactors适配器的所有舒适性……
CJones
2楼-- · 2020-08-14 03:58

感谢Raffael,

您的贡献永远都是宝贵的。

独立观察员
3楼-- · 2020-08-14 03:35

你好拉斐尔,

根据我的理解,目前尚不支持此举,因此我已经要求克劳迪奥(Claudio)开张LOD门票, HCI-PI-GB。

关于此,

Sriprasad Shivaram Bhat

打个大熊猫
4楼-- · 2020-08-14 03:36

嗨,Sirprasad,

我使用了提到的脚本,但似乎只是提取了
if(ex.getClass()。getCanonicalName()。equals(" org.apache.camel.component.ahc.AhcOperationFailedException")的异常

在我的情况下,异常似乎有所不同,我尝试删除了if条件,但似乎excepiton无法管理有效负载:

错误详细信息com.sap.it.rt。 adapter.http.api.exception.HttpResponseException:发生内部服务器错误:方法的无签名:com.sap.gateway.core.ip.component.exception.ODataProcessingException.getResponseBody()适用于参数类型:()值: []。 失败消息的MPL ID为:AF8n8pP3M_fklICuwcddZLp9sDF5有关更多详细信息,请检查尾日志。

谢谢

空代码
5楼-- · 2020-08-14 03:39

你好克劳迪奥,

请参考以下脚本,该脚本提供 有关如何检索HTTP错误响应的详细信息(在异常子过程中使用此脚本,以便您能够在发生故障时捕获错误)。

https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4ea4e4a4e4a1e4d4eaf4d4eafa >

致谢

Sriprasad Shivaram Bhat