栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

java流式编程传对象无法更新

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java流式编程传对象无法更新

我们在我们的应用程序中有两个部分:服务器 – 提供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()

跟Fiddler跟踪我有下一个回应:

消息在客户端被解析正确:

HTTP/1.1 402 Payment Required

X-Powered-By: Servlet/3.0

Content-Type: application/json

Content-Language: en-GB

Content-Length: 55

Connection: Close

Date: Sat, 25 May 2013 10:10:44 GMT

Server: WebSphere Application Server/8.0

{"error":"I cant find that user. Please try again."}

和消息是异常的原因:

HTTP/1.1 401 Unauthorized

X-Powered-By: Servlet/3.0

Content-Type: application/json

Content-Language: en-GB

Content-Length: 55

Date: Sat, 25 May 2013 11:00:21 GMT

Server: WebSphere Application Server/8.0

{"error":"I cant find that user. Please try again."}

我的问题是在这种情况下可能是java.net.HttpRetryException的原因?

另外:有一段时间以前这种机制很好.但是由于我们已经改变了很多应用程序中的代码.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号