`

服务端执行慢或网络延迟时,Volley多次发送请求的问题

阅读更多
原文:
Android Volley double post when have slow request
I have a problem with Volley POST request on slow network

这哥们儿遇到的问题,在国内的我同样遇到了
情况描述:
一直用Volley很正常,调用服务器接口发布内容,成功就发布一条,不成功就没有;
最近服务器端在接收到我上传的图片或视频之后,做了处理,导致其接收速度和往常一样,但是对APP端的响应速度延迟了1-3秒,使得发布内容加倍,有时一条,有时两条三条,
查看log日志,自己手动调用mRequestQueue.add(request)以及mRequestQueue.start()的次数始终为1,但是与服务器联调时,服务器端的确被调用了两三次;谷歌后得知,这算是volley的一个bug吧(具体应该不算)
相应讨论:google groups

解决方案:

1.对Request设置重试策略时,更改默认超时时间
request.setRetryPolicy(
                new DefaultRetryPolicy(
                        10*1000,//默认超时时间,应设置一个稍微大点儿的
                        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//默认最大尝试次数
                        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
                )
        );


2.在HurlStack中的openConnection方法中,在相应段落增加
connection.setChunkedStreamingMode(0)


PS:在实际项目中,我用了第一种方案,就解决了我的问题。。。
分享到:
评论

相关推荐

    volley网路请求和图片上传源码(包括服务端)

    - 服务端代码可能包括接收 Volley 发送的网络请求、解析上传的图片文件、存储图片以及返回响应等逻辑。 - 可能使用的服务器框架有 Node.js、Java Servlet、Spring Boot 等,具体取决于服务端语言和技术栈。 6. **...

    Volley加载图片发送请求

    在"Volley加载图片发送请求"这个主题中,我们将深入探讨如何利用Volley库来处理ListView中图片的加载以及网络请求的发送。 首先,Volley的核心优势在于其高效的缓存机制和线程管理。它内部使用了LruCache进行内存...

    Volley网络请求demo

    Volley的核心优势在于其内置了缓存机制、线程池管理和请求队列,能够优化网络请求的性能,减少延迟,提高用户体验。以下是对Volley关键特性和用法的详细解释: 1. **请求队列(RequestQueue)**:Volley的核心组件...

    网络请求框架volley-master

    网络请求框架volley-master网络请求框架volley-master

    Volley发送POST请求的Demo

    总结来说,这个"Volley发送POST请求的Demo"是一个实践教程,帮助开发者了解如何在Android应用中使用Volley库发送POST请求,处理JSON数据,并应对网络请求的成功与失败情况。通过学习和应用这个Demo,开发者能够更好...

    防volley网络请求框架

    1. **请求队列**:Volley提供了一个请求队列,可以方便地管理多个网络请求,根据优先级进行调度,避免一次性发送大量请求导致的性能问题。 2. **缓存策略**:Volley内置了基于内存和磁盘的缓存机制,能够智能地缓存...

    Volley二次封装,用于网络请求(上传,下载)

    8. **线程管理**:Volley默认在后台线程执行网络请求,但二次封装时,可以增加自定义线程池的功能,以应对不同的并发需求。 9. **错误处理**:统一错误处理逻辑,包括网络异常、服务器错误等,提供详细的错误信息,...

    基于Android Volley的网络请求工具

    Android Volley 是Google推出的一款高效的网络请求库,专为Android应用设计,旨在简化网络通信并优化性能。Volley提供了异步请求处理、缓存策略、线程管理以及强大的错误处理机制,使得开发者能够更加便捷地进行网络...

    Volley框架之网络请求和图片加载

    Volley是Google推出的一款高效的Android网络请求库,它旨在简化Android应用中的网络操作,特别是对于频繁的小数据量请求。Volley以其高效的缓存机制、线程管理以及对异步请求的良好支持而备受开发者青睐。本篇文章将...

    安卓网络请求框架volley的封装 轻松实现网络请求

    在Android应用开发中,网络请求是不可或缺的一部分,Volley是Google推出的一个高效的网络请求库,它优化了网络通信,提供了便捷的API接口,使得开发者能够快速、轻松地实现网络数据的获取。本文将深入探讨Volley框架...

    Volley发送GET请求的Demo

    在"Volley发送GET请求的Demo"中,我们将探讨如何利用Volley库实现一个简单的GET请求。以下是一个详细的步骤解析: 1. **添加Volley依赖** 首先,确保在项目的build.gradle文件中添加Volley库的依赖。如果是使用...

    Android网络请求框架之volley框架

    Volley是Google官方推出的一款高效的Android网络请求框架,专为Android平台设计,旨在提供轻量级、快速且易于使用的网络通信库。它以其强大的缓存机制、线程管理以及对异步请求的良好支持而受到开发者欢迎。Volley的...

    Android Volley 请求代码

    `Android Volley` 是Google在2013年I/O大会上推出的网络请求库,它以其高效、易用的特点深受Android开发者喜爱。Volley旨在简化网络请求处理,优化性能,特别是在处理小数据量和高频率交互的场景下表现突出。下面...

    Volley修改超时时间和请求头源码

    至于“防止多次调用”的问题,Volley提供了缓存机制来避免不必要的网络请求。通过合理的缓存策略,我们可以减少对服务器的重复请求。Volley的缓存策略可以通过CacheDispatcher和NetworkDispatcher两个线程进行控制。...

    网络请求Volley的jar包

    网络请求Volley的jar包

    Android Volley框架之网络请求和图片加载.rar

    Android Volley框架是Google推出的一款高效的网络通信库,主要设计用于Android应用中的网络请求处理,尤其在处理小数据量和高频率的网络交互时表现出色。它优化了网络请求的性能,降低了延迟,提高了用户体验。...

    基于volley&Xuitls的网络请求

    2. **线程管理**:Volley自动管理线程,将网络请求任务放在后台执行,避免阻塞主线程。 3. **请求队列**:Volley提供了一个请求队列,可以批量添加网络请求,并按需调整请求优先级。 4. **强大的数据解析**:支持...

    网络请求框架Volley

    2. **线程管理**:Volley内部实现了请求队列,可以自动管理网络请求的线程,避免了多线程同步的问题,同时也减少了CPU资源的消耗。 3. **异步处理**:Volley支持异步网络请求,它会将请求放入请求队列,自动在后台...

    volley图片上传服务端

    Volley是Google推出的一款高效的网络请求库,特别适合Android应用中的短、快的网络请求,如数据同步和图片加载等。在"Volley图片上传服务端"这个主题中,我们将探讨如何利用Volley进行图片上传,并结合SpringMVC构建...

    volley post.get请求,图片请求

    Volley是Google推出的一款高效的网络请求库,特别适用于Android应用中的网络操作。它以其轻量级、易用性以及良好的性能而受到开发者的欢迎。在本文中,我们将深入探讨如何使用Volley进行POST和GET请求,以及如何处理...

Global site tag (gtag.js) - Google Analytics