当前位置: 首页 > 知识库问答 >
问题:

WSO2集成器:REST API GET请求缺少响应体

赵炯
2023-03-14

我正在使用WSO2 Integrator6.6.0使阻塞HTTP获得返回JSON响应的REST API(HTTP 200 OK)。

但我从未在序列中看到反应体。我不确定我做错了什么,已经用尽了所有可用的文档和其他线程。

执行调用的序列(简化为匿名),随后记录响应:

<!-- Remove XML body as not needed for GET request -->
<payloadFactory media-type="json">
    <format></format>
    <args></args>
</payloadFactory>
<header name="Accept" value="application/json" scope="transport"/>
<property name="NO_ENTITY_BODY" value="true" scope="axis2" type="BOOLEAN" />

<call blocking="true">
    <endpoint>
         <http method="GET" uri-template="http://my-api/order-status">
    </endpoint>
</call>
<property name="RESPONSE" scope="default" type="STRING" value="true"/>
<log level="full">
    <property name="response-log" value="Received response"/>
    <property expression="$body" name="response-body"/>
    <property expression="json-eval($)" name="json-eval-body"/>
</log>

这只会导致一个日志行--根本没有响应体!

我可以在我的API应用程序中看到请求,我还可以看到它在日志中正确地返回响应体。此外,使用Postman执行相同的请求,我会收到以下带有200 OK和内容类型appication/JSON的JSON响应:

{
   "order_status": "NOT_FOUND"
}

在WSO2里面我什么也没看到!我希望能够将响应转换为XML格式。

会有什么问题吗?

共有1个答案

牧信厚
2023-03-14

在进行REST调用之前,需要从主调用中移除标头。

将此代码段放在调用中介器之前:

<property name = "FORCE_HTTP_CONTENT_LENGTH" scope = "axis2" type = "STRING" value = "true" />
     <property action = "remove" name = "REST_URL_POSTFIX" scope = "axis2" />
     <property action = "remove" name = "TRANSPORT_HEADERS" scope = "axis2" />

据我所知,这应该能解决问题。

 类似资料:
  • 我应该创建自己的自定义属性,并将它们记录在insequence和Outsequence中吗?

  • 我有一个获得名称和描述参数的APIendpoint(两者都是强制性的) 如果客户不提供任何这些,他将收到400个错误请求 有没有办法让我告诉客户缺少哪个字段?为“坏请求”响应提供更多信息

  • 我有一个集成应用程序,大部分工作,但注意到昨天一个消息丢失了。当时,service-activatorendpoint正忙于处理先前的消息。 以下是适用于该问题的配置。

  • 我正在使用WSO2发送Rest请求,这是我能够做到的。但是在我向客户发送响应之前,我希望有一些逻辑。后端Rest服务返回“成功”作为响应字符串。我有一个Java的代码用来做这件事,我想在WSO2中使用相同的逻辑。逻辑很简单1.如果HTTP状态大于eq到200并且小于300并且共振Str.equalsIgnoreCase(成功)然后返回RetCode=C; Message=成功ELSE返回RetCo

  • 介绍 YurunHttp 的请求响应类,结果类。除了遵循 PSR-7 规范,另外还增加了一些人性化的方法。 类:Yurun\Util\YurunHttp\Http\Response use Yurun\Util\HttpRequest; $http = new HttpRequest; $response = $http->get('http://www.baidu.com'); 方法 响应内

  • 我是一个初学者在刮,python。我试图在scrapinghub中部署spider代码,但遇到了以下错误。下面是代码。 是我spider.py代码 就是这些项目。py代码和 这是设置。py代码。 以下是错误。 回溯(最近一次调用):文件“/usr/local/lib/python2.7/site packages/scrapy/core/engine.py”,第126行,在启动请求的第70行,文件