首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当服务器发送HttpClient-4错误时中止HTTP PUT请求

当服务器发送HttpClient-4错误时中止HTTP PUT请求
EN

Stack Overflow用户
提问于 2012-08-24 16:45:21
回答 2查看 876关注 0票数 3

我使用以下代码使用httpclient-4将流(在本例中是一个大文件)的内容发送到Tomcat的upload servlet:

代码语言:javascript
复制
HttpRequest httpRequest = new HttpPut(destination);
InputStreamEntity entity = new InputStreamEntity(inputStream, contentLength);
((HttpPut)httpRequest).setEntity(entity);
httpClient.execute(httpRequest,handler);

它工作得很好。我后来添加了一种身份验证机制,以防止未经授权的用户上传文件。如果有人试图在没有经过身份验证的情况下上传,servlet直接用一个

代码语言:javascript
复制
response.sendError(HttpServletResponse.SC_FORBIDDEN)

甚至不处理请求的InputStream。

我面临的问题是,尽管请求在服务器端被拒绝,但我的客户端一直在发送InputStream的整个内容,从而导致完全无用的网络使用。

我已经查看了httpclient的文档,但不幸的是没有找到任何关于这一点的内容。我还查看了Tomcat端,看看是否有可能中止请求,但it doesn't seem possible

在这种情况下,有没有办法取消上传?

任何真知灼见都将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-24 23:48:17

这个问题的一个适当的解决方案是在客户端开启所谓的'expect: continue‘握手。较新版本的ApacheApache4.x默认情况下将其禁用。

票数 3
EN

Stack Overflow用户

发布于 2012-08-24 17:43:17

您可以关闭服务器端的InputStream,它将停止传输。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12105950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档