SAP Cloud Platform集成-Groovy提取httpresponseexception

2020-08-14 03:31发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)所有人, 按照标题的要求,是否...

         点击此处--->   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条回答
绿领巾童鞋
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适配器的所有舒适性……

一周热门 更多>