相关文章推荐
灰常酷的显示器  ·  台湾逢甲大学土木系蔡崇兴教授学术报告会通知·  6 月前    · 
叛逆的灌汤包  ·  总规、控规、修规、概念性规划之间的关系·  8 月前    · 
独立的冰棍  ·  李白为了夸赞杨贵妃,一口气写下三首诗,开篇就 ...·  1 年前    · 
鬼畜的甜瓜  ·  雅雨书屋闲话水浒之十四:朱贵的绰号“旱地忽律 ...·  1 年前    · 
不开心的消防车  ·  IPO受阻的天鹅到家能否熬过三季度_手机新浪网·  1 年前    · 
小百科  ›  Android必言必会-取用okhttp的PUT方式截图文件-腾讯云开发者社区-腾讯云
string
谦和的拐杖
1 年前
作者头像
他叫自己MR.张
0 篇文章

Android必知必会-使用okhttp的PUT方式上传文件

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Android必知必会 > Android必知必会-使用okhttp的PUT方式上传文件

Android必知必会-使用okhttp的PUT方式上传文件

作者头像
他叫自己MR.张
发布 于 2019-07-01 17:24:40
1.9K 0
发布 于 2019-07-01 17:24:40
举报

注: 如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端。

背景

公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp网络库,就查了下资料,在这里分享一下。

代码实现

okhttp 2.7.X

    /**
     * @param mediaType MediaType
     * @param uploadUrl put请求地址
     * @param localPath 本地文件路径
     * @return 响应的结果 和 HTTP status code
     * @throws IOException
    public String put(MediaType mediaType, String uploadUrl, String localPath) throws IOException {
        File file = new File(localPath);
        RequestBody body = RequestBody.create(mediaType, file);
        Request request = new Request.Builder()
                .url(uploadUrl)
                .put(body)
                .build();
        Response response = client.newCall(request).execute();
        return response.code()+ ":" + response.body().string() ;
    //上传JPG图片
    public String putImg(String uploadUrl, String localPath) throws IOException {
        MediaType Image = MediaType.parse("image/jpeg; charset=utf-8");
        return put(Image, uploadUrl, localPath);
    }

可能还需要进行的设置:修改各种 Timeout

OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(30, TimeUnit.SECONDS);
client.setReadTimeout(15, TimeUnit.SECONDS);
client.setWriteTimeout(30, TimeUnit.SECONDS);

okhttp 3.X

    /**
     * @param mediaType MediaType
     * @param uploadUrl put请求地址
     * @param localPath 本地文件路径
     * @return 响应的结果 和 HTTP status code
     * @throws IOException
    public String put(MediaType mediaType, String uploadUrl, String localPath) throws IOException {
        File file = new File(localPath);
        RequestBody body = RequestBody.create(mediaType, file);
        Request request = new Request.Builder()
                .url(uploadUrl)
                .put(body)
                .build();
        //修改各种 Timeout
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(600, TimeUnit.SECONDS)
                .readTimeout(200, TimeUnit.SECONDS)
                .writeTimeout(600, TimeUnit.SECONDS)
                .build();
        //如果不需要可以直接写成 OkHttpClient client = new OkHttpClient.Builder().build();
        Response response = client
                .newCall(request)
                .execute();
        return response.body().string() + ":" + response.code();
//上传JPG图片
    public String putImg(String uploadUrl, String localPath) throws IOException {
        MediaType imageType = MediaType.parse("image/jpeg; charset=utf-8");
 
推荐文章
灰常酷的显示器  ·  台湾逢甲大学土木系蔡崇兴教授学术报告会通知
6 月前
叛逆的灌汤包  ·  总规、控规、修规、概念性规划之间的关系
8 月前
独立的冰棍  ·  李白为了夸赞杨贵妃,一口气写下三首诗,开篇就是千古名句_唐玄宗
1 年前
鬼畜的甜瓜  ·  雅雨书屋闲话水浒之十四:朱贵的绰号“旱地忽律”应该如何解释?
1 年前
不开心的消防车  ·  IPO受阻的天鹅到家能否熬过三季度_手机新浪网
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号