java中断请求_java-取消/中止/中断spring-android resttemplate请求
我在专用于执行spring android请求的线程中使用spring android.
我无法实现终止从Spring android(例如getForObject)启动的请求.
我试过了 :
>到达基础输入流以关闭,但已完全包装在springandroid restemplate中,无法从外部访问
>中断线程
>获取其余模板的请求工厂并调用destroy
>获得工厂的连接管理器并致电关机
>更改其余模板工厂的http客户端
>更改其余模板工厂的请求工厂
但我无法中止请求并快速发送新请求.第一个必须达到其超时.
我如何“杀死”一个春季android请求以获得稳定的rest模板以发送新请求?
提前致谢.
解决方法:
我建议使用ResponseExtractor.
您可以调用RestTemplate的execute方法,如下所示.
File file = (File) restTemplate.execute(rootUrl.concat("/vocasets/{vocasetId}/{version}"), HttpMethod.GET, requestCallabck,
responseExtractor, uriVariables);
ResponseExtractor具有extractData方法.您可以通过响应的getBody()从extractData方法获取主体输入流.
扩展ResponseExtractor以取消您的请求.
祝好运.
就我而言,我使用了侦听器方式.
static class FileResponseExtractor implements ResponseExtractor {
...
public void setListener(ReceivingListener listener) {
this.listener = listener;
}
@Override
public File extractData(ClientHttpResponse response) throws IOException {
InputStream is = response.getBody();
long contentLength = response.getHeaders().getContentLength();
long availableSpace = AvailableSpaceHandler.getExternalAvailableSpaceInMB();
long availableBytes = AvailableSpaceHandler.getExternalAvailableSpaceInBytes();
Log.d(TAG, "available space: " + availableSpace + " MB");
long spareSize = 1024 * 1024 * 100;
if(availableBytes < contentLength + spareSize) {
throw new NotEnoughWritableMemoryException(availableSpace);
}
File f = new File(temporaryFileName);
if (f.exists())
f.delete();
f.createNewFile();
OutputStream o = new FileOutputStream(f);
listener.onStart(contentLength, null);
boolean cancel = false;
try {
byte buf[] = new byte[bufferSize];
int len;
long sum = 0;
while ((len = is.read(buf)) > 0) {
o.write(buf, 0, len);
sum += len;
listener.onReceiving(sum, len, null);
cancel = !listener.onContinue();
if(cancel) {
Log.d(TAG, "Cancelled!!!");
throw new CancellationException();
}
}
} finally {
o.close();
is.close();
listener.onFinish(null);
if(cancel) {
f.delete();
}
}
return f;
}
}
标签:multithreading,networking,resttemplate,java,android
来源: https://codeday.me/bug/20191127/2075781.html
java中断请求_java-取消/中止/中断spring-android resttemplate请求相关推荐
- Spring简化Java开发_java开发如何用spring简化?详细图解
近些年,随着科学技术水平的不断进步与发展,各种高新技术的应用越来越广泛.这也吸引了越来越多的人去学习java等编程语言以更好地适应时代的发展.今天就来为大家介绍一些与java有关的知识.也就是java ...
- java webmethod 参数_java详解Spring接收web请求参数的方式
本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...
- java代码审计_Java代码审计| Spring框架思路篇
Java的WEB框架是Java进阶课程,当要进行Spring的漏洞分析,要有一定的Java代码知识储备. Java后端标准的学习路线:JavaSE->JavaEE->Java Web框架 ...
- java 并发_Java并发编程中断机制 so easy
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...
- java客户端_Java常用的Http client客户端
Http Client应用场景: Http协议是最重要的网络协议之一,目前移动端的开发.javaweb前后端分离架构,使越来越多的java应用使用http协议访问资源.Http client 大多数场 ...
- Java自学全套视频(jse,jee,ssh,android,oracle,linux,html,js,jQuery等)下载地址
每个网址中提供的下载链接不能保证期下载速度及当你下载时是否失效,使用下载链接中下载操作,或右击"使用迅雷下载",或右击"使用360浏览器下载",或右击" ...
- JAVA多线程之中断机制(如何处理中断?)
一,介绍 这篇文章主要记录使用 interrupt() 方法中断线程,以及如何对InterruptedException进行处理.感觉对InterruptedException异常进行处理是一件谨慎且 ...
- mysql接口java代码_java改成接口类
类图 1.如果开发java项目最好设置如下:----->Tools ----->Option---->Notation---->Default中的值改成Java 2.将模型转换 ...
- Java零基础可以直接入门spring boot吗?
不推荐.一般学习的路线是java基础,然后数据库,接着是spring,了解spring的核心思想,再学springmvc,之后才学springboot. 什么是Spring Boot Spring B ...
最新文章
- C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件
- asp.net mvc 3 RTM 发布了!
- mysql转oracle注意事项
- 梅赛德斯奔驰即将为Apple Watch推出应用
- tomcat的安装和部署项目
- 互联网1分钟 |1207
- jQuery源码分析系列 : 整体架构
- 2022 年是 Linux 桌面年吗?
- win10下正确使用Sublime Text搭建python调试环境
- H3C ACL 访问控制
- 11.微信小程序图片操作总结
- Centos7下载和安装教程
- UMLChina公众号文章精选(20220619更新精选)
- MediaWiki安装插件Semantic MediaWIKI + PageForms
- 微信开放平台的使用介绍,配置流程
- SylixOS设备驱动
- 今日早报 每天一分钟知晓天下事 3-13
- P1335 [NOI2013] 小Q的修炼 题解
- 微信小程序-一个跑步app
- libxml使用实例