okhttp

android实现大文件断点上传

北慕城南 提交于 2020-04-15 13:47:42
【推荐阅读】微服务还能火多久?>>> 前言 之前项目需要上传大文件的功能,上传大文件经常遇到上传一半由于网络或者其他一些原因上传失败。然后又得重新上传(很麻烦),所以就想能不能做个断点上传的功能。于是网上搜索,发现市面上很少有断点上传的案例,有找到一个案例也是采用SOCKET作为上传方式(大文件上传,不适合使用POST,GET形式)。由于大文件夹不适合http上传的方式,所以就想能不能把大文件切割成n块小文件,然后上传这些小文件,所有小文件全部上传成功后再在服务器上进行拼接。这样不就可以实现断点上传,又解决了http不适合上传大文件的难题了吗!!! 原理分析 ******* Android 客户端******** 首先,android端调用服务器接口1,参数为filename(服务器标识判断是否上传过) 如果存在 filename ,说明之前上传过,则续传;如果没有,则从零开始上传。 然后,android端调用服务器接口2,传入参数name,chunck(传到第几块),chuncks(总共多少块) ******* 服务器端 ******** 接口一:根据上传文件名称filename 判断是否之前上传过,没有则返回 客户端 chunck=1,有则读取记录 chunck 并返回 。 接口二:上传文件,如果上传块数chunck=chuncks,遍历所有块文件拼接成一个完整文件。 接口1

why can I only read 2048 bytes at a time from an okhttp.Response InputStream?

天涯浪子 提交于 2020-04-10 18:05:26
问题 I am downloading a file using an OkHttp GET request: import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; ... OkHttpClient okClient = new OkHttpClient(); Request request = Request.Builder().url(url).get(); Response response = okClient.newCall(request).execute(); I read from the response body and decorating it with a BufferedInputStream , with a buffer size of 4096: BufferedInputStream in = new BufferedInputStream(response.body()

RxJava2+Retrofit2+RxLifecycle3+OkHttp3网络请求封装(动态演示)

感情迁移 提交于 2020-04-10 11:21:11
入职公司后,公司要求组件化开发,经过讨论后我将网络请求框架单独进行了封装,不过当时框架里将常用的 util 和 ui 均放入到了共同的 Common 包下,导致里面部分代码耦合,后来为了降低耦合性又将 Common 拆分为了lib_common和lib_ui,但是 lib_ui 依赖了 lib_common,还是导致部分代码耦合,最新一期为了降低组件之间的耦合性,所以单独将 lib_common 中的网络请求单独拆分,并且我又做了新的封装和完善,总之网络框架经过3次大的改造后,使用已经非常稳定了。 使用步骤 1.在Application类中进行初始化操作 ApiConfig build = new ApiConfig.Builder() .setBaseUrl(baseUrl)//BaseUrl,这个地方加入后项目中默认使用该url .setInvalidateToken(0)//Token失效码 .setSucceedCode(200)//成功返回码 .setFilter("com.mp5a5.quit.broadcastFilter")//失效广播Filter设置 //.setDefaultTimeout(2000)//响应时间,可以不设置,默认为2000毫秒 //.setHeads(headMap)//动态添加的header,也可以在其他地方通过ApiConfig

okhttp get failure response

☆樱花仙子☆ 提交于 2020-04-09 18:27:37
问题 I've implemented okhttp in my android client for network calls. When i get a failure response i get the failure code and the text related to the code as a message but i don't get the custom failure response that the server sends me. In my failure response in the implemented code the message i get is just "Bad Request". Whereas the same response from the browser is as follows. How do i get the error message the server is giving me back? My code private void executeCall(Request request, final

OkHttp配置HTTPS访问+服务器部署

Deadly 提交于 2020-04-06 08:47:21
1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二个用来验证主机名,第三个是证书信任器管理类.通过OkHttp实现HTTPS访问需要自己实现以上三部分.另外还简单提及了服务器端的部署,用的是Tomcat9,最后是一些常见问题的可能解决方案. 2 OkHttp介绍 OkHttp是一款开源的处理网络请求的轻量级框架,有Square公司贡献,用于替代HttpUrlConnection与Apache HttpClient,目前Github上有36.4k的star.优点有 共享socket,HTTP/2支持所有连接到同一个主机的请求共享socket 连接池可以减少请求延迟 缓存响应数据减少重复的网络请求 自动处理gzip压缩 总的来说OkHttp是一款支持get/post请求,支持文件上传/下载的优秀的HTTP框架. 3 准备工作 一台服务器 一个域名 一个证书 什么?都没有?买! 当然证书可以不用买,可以使用openssl之类的工具生成,不过自签名的证书后面验证的时候会有点麻烦,建议还是购买. 4 OkHttp部分 4.1 暴力方案 public static String test() { OkHttpClient client = new

AOP方式向okhttp完成网络的监听拦截

拜拜、爱过 提交于 2020-04-06 06:10:09
AOP方式向okhttp完成网络的监听拦截 在编译时候,会在所有调用OkHttpClient的地方,自动添加,保证不会忘记,如果你的App还是用其他的sdk,sdk里面也是用OKhttp的话,也会监控到sdk里面的网络请求,不少大厂已经使用了这种方法,然后收集请求数据到后端,方便管理和优化。 下面简单介绍相关代码: 首先集成 gradle_plugin_android_aspectjx 插件 dependencies { classpath ' com.hujiang.aspectjx:gradle-android-plugin-aspectjx:1.0.9 ' } 然后定义Aspectj切入点 import com.facebook.stetho.okhttp3.StethoInterceptor ; import com.readystatesoftware.chuck.ChuckInterceptor ; import org.aspectj.lang.ProceedingJoinPoint ; import org.aspectj.lang.annotation.Around ; import org.aspectj.lang.annotation.Aspect ; import org.aspectj.lang.annotation.Pointcut ; import

java七牛云sdk本地上传Springboot示例

故事扮演 提交于 2020-04-06 04:00:28
依赖解决: 1.七牛云的Java SDK从7.2.24开始要求Java1.8及以上(因为依赖的okhttp3 升级到 3.14.2,不支持jdk7),官方提示:若一定 java 1.7 ,请手动指定 okhttp3 依赖 3.12,要求 3.12.3 及以上, com.squareup.okhttp3:okhttp:3.12.3 。如果是用jdk8可以直接跳到使用示例。 咱们先看一下SDK7.2.23的依赖: <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.11.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency> 这里本人亲测,7.2.23版本所依赖的okhttp:3.11.0现在依然可用,如果我们想用更高版本的okhttp可以通过先排除低版本依赖再导入高版本依赖的方式解决: <!-- https:/

HTTP连接客户端,选 HttpClient 还是 OkHttp ?

我只是一个虾纸丫 提交于 2020-03-08 17:35:19
作者:何甜甜在吗 https://www.jianshu.com/p/68c30beca612 写在前面 为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别、性能比较进行搜索,没有找到想要的答案,于是就去overstackflow上看看是不是有人问过这个问题,果然不会让你失望的 所以从使用、性能、超时配置方面进行比较 使用 HttpClient和OkHttp一般用于调用其它服务,一般服务暴露出来的接口都为http,http常用请求类型就为GET、PUT、POST和DELETE,因此主要介绍这些请求类型的调用 HttpClient使用介绍 使用HttpClient发送请求主要分为以下几步骤: 创建 CloseableHttpClient对象或CloseableHttpAsyncClient对象,前者同步,后者为异步 创建Http请求对象 调用execute方法执行请求,如果是异步请求在执行之前需调用start方法 创建连接: CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 该连接为同步连接 GET请求: @Test public void testGet() throws IOException {

Java OkHttpClient Can not connect to localhost [closed]

风流意气都作罢 提交于 2020-03-06 11:05:05
问题 Closed . This question needs details or clarity. It is not currently accepting answers. Want to improve this question? Add details and clarify the problem by editing this post. Closed 5 days ago . When i try to connect my api running on my localhost with OkHttpClient in java. But it throws that error: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 44338) from /127.0.0.1 (port 35986) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused) I tried to