Retrofit是一个用于安卓和java的http框架,具体用法可以查看它的官网和github。网上也有很多使用教程,这里主要简单说下用它以form表单上传图片的方法。
官网http://square.github.io/retrofit/
github https://github.com/square/retrofit
1.添加gradle引用
-
compile
'com.squareup.retrofit2:retrofit:2.1.0'
-
compile
'com.squareup.retrofit2:converter-gson:2.1.0'
//用于解析json数据
-
compile
'com.squareup.retrofit2:adapter-rxjava:2.1.0'
//这里用于retrofit与rxjava结合使用
2.请求接口
-
public
interface HttpApi{
-
@Multipart
//这里用Multipart
-
@POST("url/myurl")
//请求方法为POST,里面为你要上传的url
-
Call<Result> myUpload(
@Part List<MultipartBody.Part> partLis)
-
//注释用@Part,参数类型为List<MultipartBody.Part> 方便上传其它需要的参数或多张图片
-
//Result为我自定义的一个类
-
}
3.初始化Retrofit
-
Retrofit retrofit =
new Retrofit.Builder()
-
.baseUrl(
"https://api.github.com/")
-
.build();
-
-
HttpApi service = retrofit.create(HttpApi.
class);
4.开始上传图片
-
-
//1.创建MultipartBody.Builder对象
-
MultipartBody.Builder builder =
new MultipartBody.Builder()
-
.setType(MultipartBody.FORM)
//表单类型
-
-
//2.获取图片,创建请求体
-
File file=
new File(path);
-
RequestBody body=RequestBody.create(MediaType.parse(
"multipart/form-data"),file);
//表单类型
-
-
//3.调用MultipartBody.Builder的addFormDataPart()方法添加表单数据
-
builder.addFormDataPart(key, value);
//传入服务器需要的key,和相应value值
-
builder.addFormDataPart(key,file.getName(),body);
//添加图片数据,body创建的请求体
-
-
//4.创建List<MultipartBody.Part> 集合,
-
// 调用MultipartBody.Builder的build()方法会返回一个新创建的MultipartBody
-
// 再调用MultipartBody的parts()方法返回MultipartBody.Part集合
-
List<MultipartBody.Part> parts=builder.build().parts();
-
-
//5.最后进行HTTP请求,传入parts即可
-
Call<Result> uploadPic=service.myUpload(parts);