修改 OSB 响应管道中的标头

问题描述

我正在调用 Oracle Service Bus 12c 中的业务服务,该服务返回 SOAP 响应。但是,它包含的标头将 Content-Type 指定为“text/xml”。:

# curl -i "http://third.party.com:2345/api?action=sendmessage&username=myuser&password=mypass&recipient=123456&originator=1234&messagedata=Test123"
HTTP/1.1 200 OK
Cache-Control: no-cache,must-revalidate
Pragma: no-cache
Content-Length: 492
Content-Type: text/xml
Last-Modified: Sun,27 Dec 2020 20:03:46 GMT
Server: OzekiNG/4.1.12 Microsoft-HTTPAPI/2.0
Date: Sun,27 Dec 2020 15:03:45 GMT

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

<response>
  <action>sendmessage</action>
  <data>
    <acceptreport>
      <statuscode>0</statuscode>
      <statusmessage>Message accepted for delivery</statusmessage>
      <messageid>2994bd84-2699-4344-bee4-93ce21aa5202</messageid>
      <originator>1234</originator>
      <recipient>123456</recipient>
      <messagetype>TEXT</messagetype>
      <messagedata>Test123</messagedata>
    </acceptreport>
  </data>
</response>

OSB 对此抛出异常:

<Dec 27,2020 10:06:09,409 PM PKT> <Error> <oracle.osb.resources.service.service> <OSB-398000> <Exception in OutboundRestHandler.handleResponse,com.bea.alsb.ws.codec.CodecException: No acceptable representation for response with "text/xml" media type was found
com.bea.alsb.ws.codec.CodecException: No acceptable representation for response with "text/xml" media type was found
        at com.bea.wli.sb.service.handlerchain.handlers.OutboundWsdlRestHandler$AbstractResponseMessage.getPart(OutboundWsdlRestHandler.java:375)
        at com.bea.wli.sb.service.handlerchain.handlers.OutboundWsdlRestHandler$AbstractResponseMessage.getPart(OutboundWsdlRestHandler.java:318)

我正在尝试通过使用替换操作来替换它,我尝试将其放置在 Pipeline Pare Node1 和 RouteNode1 中:

Location: header
          $inbound/ctx:transport/ctx:response/tp:headers/http:Content-Type
Value: "application/xml"
Replace node contents

到目前为止没有帮助。显然响应头需要在路由节点看到之前修改

那么我应该在哪里更改它,以及如何更改?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)