Android用retrofit上传图片,Retrofit2.0 实现图文(参数+图片)上传方法总结
时间: 2023-12-14 21:37:56 浏览: 187
Android使用Retrofit2.0技术仿微信发说说
在 Android 中使用 Retrofit 上传图片可以通过 `@Multipart` 和 `@Part` 注解实现。以下是 Retrofit 2.0 实现图文上传的方法总结:
1. 添加依赖库
在项目的 `build.gradle` 文件中添加以下依赖库:
```groovy
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
```
2. 创建 Retrofit 实例
```java
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
```
3. 创建 API 接口
```java
public interface ApiService {
@Multipart
@POST("upload")
Call<ResponseBody> upload(
@Part("description") RequestBody description,
@Part MultipartBody.Part file);
}
```
其中,`@Multipart` 注解表示这是一个包含文本和文件的表单;`@POST("upload")` 表示上传的 URL 地址;`@Part("description") RequestBody description` 表示上传的文本参数,`description` 是参数名,可以自己定义;`@Part MultipartBody.Part file` 表示上传的文件参数。
4. 创建请求参数
```java
File file = new File(filePath);
RequestBody requestFile = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), requestFile);
RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), "description");
```
5. 发送网络请求
```java
ApiService apiService = retrofit.create(ApiService.class);
Call<ResponseBody> call = apiService.upload(description, body);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
// 成功上传后的处理
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// 上传失败后的处理
}
});
```
以上就是 Retrofit 2.0 实现图文上传的方法总结。注意,在 `AndroidManifest.xml` 文件中需要添加网络权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
阅读全文