版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载,违者必究。 https://blog.csdn.net/Cricket_7/article/details/89668235
1,添加依赖
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//依赖和retrofit对应的gson解析类库,配置了就拥有了json解析的功能
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
2,Retrofit 上传文件
【1】定义访问注释接口
-
接口文档
-
定义访问注释接口
//上传头像的业务方法
@Multipart //以多块的格式开上传文件
@POST("upload")
Call<Result> uploadAvatar(@Part("file") RequestBody reqBody);
//批量上传文件
@Multipart //以多块的格式开上传文件
@POST("uploadMulti")
Call<Result> uploadAvatars(@PartMap HashMap<String,RequestBody> map);
【2】调用RetrofitHelper获取对象
-
服务器接口需要我们传入一个file字段。但是单独传一个file 字段会报错
-
抓包看到我们http需要访问的字段名
-
MediaType.parse("image/jpeg") 中构建的字段问一下服务器需要哪些字段
final String FILE_PART = "file\"; filename=\"";
private void uploadMulti() {
//1.构造map
HashMap<String, RequestBody> map = new HashMap<>();
File file = new File(Environment.getExternalStorageDirectory(),"a.jpg");
map.put(FILE_PART + file.getName(),createImageBody(file));
Call<Result> uploadCall = RetrofitHelper.create().getxiaoshuaiApi().uploadAvatars(map);
uploadCall.enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result> response) {
Result result = response.body();
tvResult.setText(result.msg);
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
}
});
}
public RequestBody createImageBody(File file){
RequestBody fileBody = RequestBody.create(MediaType.parse("image/jpeg"),file);
return fileBody;
}
-
RequestBody.create ,可以构建多个类型,byte 或者是file