3.2 法度榜样实现
Retrofit2 是一个支撑RESTful API的请求库,实际上只是对API请求方法的封装,真正的收集请求由OkHttp发出。
Retrofit2一般会定义一个ServiceGenerator类,用于动态生成Retrofit对象。
- public class ServiceGenerator {
- public static final String API_BASE_URL = "http://192.168.1.102:5000/";
- private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
- private static Retrofit.Builder builder =
- new Retrofit.Builder()
- .baseUrl(API_BASE_URL)
- .addConverterFactory(GsonConverterFactory.create());
- public static <S> S createService(Class<S> serviceClass) {
- Retrofit retrofit = builder.client(httpClient.build()).build();
- return retrofit.create(serviceClass);
- }
- }
具体的API操作由FlaskClient接口操作,
- public interface FlaskClient {
- //上传图片
- @Multipart
- @POST("/upload")
- Call<UploadResult> uploadMultipleFiles(@PartMap Map<String,RequestBody> files);
- }
上传文件须要应用@Multipart关键字注解,@POST注解HTTP请求方法为POST,/upload为请求办事器的相对地址,uploadMultipleFiles是自定义的办法名,参数为Map<String,RequestBody> files即多个文件构成的Map对象,@PartMap注解这是多文件上传,如不雅单文件可以应用@Part MultipartBody.Part file,办法的返回类型默认为Response,因为我们已经开辟了Server端,所以知道Server端的返回数据格局为Json,是以我们针对返回数据格局新建一个UploadResut类。
- public class UploadResult {
- public int code; // 1
- public List<String> image_urls;
- }
3. 客户端开辟
点击Upload按钮后履行上传操作,核心的办法:
- public void uploadFiles() {
- if(imagesList.size() == 0) {
- Toast.makeText(MainActivity.this, "不克不及不选择图片", Toast.LENGTH_SHORT).show();
- return;
- }
推荐阅读
它是一款快速原型的设计软件,由美国加利福利亚的Balsamiq工作室推出,它真正抓住了原型设计的核心和均衡点-既能设计草图,又能较好地进入到日常平凡团队工作的流程和对象。它具有极其丰富>>>详细阅读
本文标题:Android用Retrofit 2实现多文件上传实战
地址:http://www.17bianji.com/lsqh/34876.html
1/2 1