java流式编程传对象无法更新_java.net.HttpRetryException:由于服务器身份验证,在流式传输模式下无法重试...

本文讨论了一个在Java应用中遇到的问题,即在使用Spring RestTemplate进行流式编程时,遇到HTTP 401 Unauthorized响应导致`java.net.HttpRetryException:由于服务器身份验证,在流式传输模式下无法重试`的异常。服务器返回带有错误信息的JSON响应,而客户端在401错误时抛出异常。问题可能源于代码更改,以前的机制能够正常处理此类错误。" 128369003,7772701,2023华为OD机试:最少快递主站点选择,"['算法', '华为面试', '编程', '数据结构']
摘要由CSDN通过智能技术生成

我们在我们的应用程序中有两个部分:服务器 – 提供REST服务和客户端 – 通过

Spring restTemplate消耗它们.

除了HTTP状态之外,我们的服务器还会返回具有描述错误的JSON的HTTP主体.

所以,我已经将restim错误处理程序添加到restTemplate,以将一些错误编码为非错误 – 它有助于解析HTTP身体.

但是在HTTP / 1.1 401未经授权的情况下,通过解析HTTP主体可以获得异常.

所有其他错误代码处理正常(400,402等)

我们使用普通的服务器逻辑,发送错误时发送HTTP响应,对于不同类型的错误没有特殊规则:

writeErrorToResponse(int status, String errMsg, HttpServletResponse resp) throws IOException {

response.setStatus(status);

response.setContentType(MediaType.APPLICATION_JSON_VALUE);

String message = String.format("{\"error\":\"%s\"}", StringUtils.escapeJson(errMsg));

resp.getWriter().println(message);

}

但是在客户端只有HTTP / 1.1 401抛出异常 – “java.net.HttpRetryException:由于服务器身份验证,在流式传输模式下无法重试”

我做了一些调试,看到问题的原因是SimpleClientHttpResponse中的代码:

HttpURLConnection.getInputStream()

跟Fiddle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值