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

Spring Rest模板-来自webservice的204内容响应

姬昀
2023-03-14

我有一个Rest服务,并且使用Spring的RestTemplate和Apache HttpClient作为,

    @Autowired
    public ClientImpl(@Value("${base-uri}") final String baseUrl,
                              @Qualifier("restOperations") RestOperations restTemplate) {
        serviceUrl = baseUrl;
        restTemplate = restTemplate;
    }

   private List<ResponseDetails> processRequest(CustomRequest request) throws Exception {
    ResponseEntity<ResponseDetails[]> responseEntity = restTemplate.exchange(serviceUrl, HttpMethod.POST, entity, ResponseDetails[].class);
    if (responseEntity.getStatusCode().value() == 204) {
        return Collections.<ResponseDetails>emptyList();
    }
    ResponseDetails[] response = responseEntity.getBody();
    return response != null ? Lists.newArrayList(response) : Collections.<ResponseDetails>emptyList();
}

当Web服务返回204响应时,204响应之后的第二个服务调用将失败,并出现读取超时。

Spring网:4.3.5

我不知道原因。有什么帮助吗?

编辑:从调试日志,

org . Apache . http . impl . conn . defaulthttpresponseparser;垃圾回复:ÿþ{"id":0}HTTP/1.1 204找不到

httpclient在服务器日志中的响应:

共有1个答案

吕胤
2023-03-14

HTTP 204是“无内容”的状态代码,但响应中似乎存在垃圾内容。这可以在您的日志上看到:

ÿþ{"id":0}

这就是你遇到问题的原因。

HTTP客户端不期望204响应的主体内容中有任何内容,所以不读取它,因此响应处理程序看不到任何垃圾。然而,由于存在尚未消耗的垃圾,连接将保持打开,直到它被读取-

有一个关于类似问题的单独线程,该问题是使用自定义HTTP请求执行器解决的。使用这样的执行器,您可以调用getBody()来获取垃圾响应主体,然后下一个请求将不会有任何问题。

 类似资料:
  • 我正在通过JMeter2.9进行websocket压力测试。当我用“轻”JSON发送请求和响应时。结果还可以。但是当响应json包含一个base64 png(大约360KB)时。jmeter返回代码204没有内容(可能超时)。 是我的jmeter在这里需要一些配置,还是其他问题。如果有人对此有所了解,请教我。 SampleResult字段:ContentType:DataEncoding:

  • Laravel sanctum让我有点头疼,因为我花了几个小时试图弄清楚为什么route不返回任何内容。最初未找到相同的路由返回404,但在添加 。我也运行了laravel的新安装,PHP工匠优化,清除了我的浏览器历史,检查了邮递员中的endpoint,但仍然相同的异常

  • 我正在使用Fiddler监视对ServiceStack API的调用,并且在内容长度字段中看到一个逗号。我只有在部署到特定的Windows服务器时才会看到这一点。这是什么意思? 整个回应: 我认为内容长度字段中不允许使用逗号。

  • 我有两项服务-和<代码>服务1通过SpringREST模板调用一些API。现在

  • 问题内容: 我正在使用{%trans%}模板标签。Django文档说: {%trans%}模板标记可转换常量字符串(用单引号或双引号引起来)或可变内容: {%trans“这是标题。” %} {%trans myvar%} https://docs.djangoproject.com/zh-CN/1.3/topics/i18n/internationalization/#trans-template