Android Retrofit+OkHttp 上传图片和文字

依赖

//okhttp
    implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'

    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'

Android 使用OKhttp 上传图片和文字

第一步

 OkHttpClient client = new OkHttpClient();

第二步

 MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);

 File file = new File(“全路径”);
 RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);
 String filename = file.getName();
 //后台需要的参数
 requestBody.addFormDataPart("type","0");
 //file:  后台需要的文件的key值
 requestBody.addFormDataPart("file", filename, body);


第三步

Request request = new Request.Builder().url("").post(requestBody.build()).tag(requireActivity()).build();
            // readTimeout("请求超时时间" , 时间单位);
            client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    Log.i("lfq" ,"onFailure");
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if (response.isSuccessful()) {
                        String str = response.body().string();
                        Log.i("lfq", response.message() + " , body " + str);

                    } else {
                        Log.i("lfq" ,response.message() + " error : body " + response.body().string());
                    }
                }
            });

Android 使用retrofit上传图片和文字

TestService testService = RetrofitClient.getInstance().create(TestService.class);

  testService.upLoadFile(requestBody.build())
          .subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(new Observer<BaseDataBean>() {
              @Override
              public void onSubscribe(@NotNull Disposable d) {

              }

              @Override
              public void onNext(@NotNull BaseDataBean s) {
                  Log.e("-------------------", "==============" + s);
          
              }

              @Override
              public void onError(@NotNull Throwable e) {
        
              }

              @Override
              public void onComplete() {

              }
          });

Retrofit实例

/**
 * Retrofit 获取单列
 */

public class RetrofitClient {

    public volatile static Retrofit retrofit = null;

    public static Retrofit getInstance() {
        if (retrofit == null)
            synchronized (RetrofitClient.class) {
                if (retrofit == null) {
                    retrofit = getRetrofit();
                }
            }
        return retrofit;
    }

    public static OkHttpClient getOkHttpClient() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                //设置超时
                .connectTimeout(15, TimeUnit.SECONDS)
                .readTimeout(20, TimeUnit.SECONDS)
                .writeTimeout(20, TimeUnit.SECONDS)
                //错误重连
                .retryOnConnectionFailure(true)
                //需要对请求参数进行处理的时候添加
             //   .addInterceptor(new ParameterInterceptor())// 拦截器
                .addInterceptor(loggingInterceptor);

        return builder.build();
    }

    public static HttpLoggingInterceptor loggingInterceptor =
            new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
                @Override
                public void log(String message) {
                    //打印retrofit日志
                    Log.e("RetrofitLog", message + "");
                }
            }).setLevel(HttpLoggingInterceptor.Level.BODY);


    public static Retrofit getRetrofit() {
        return new Retrofit.Builder().baseUrl("")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(getOkHttpClient())
                .build();
    }


    public static <T> T getAPIService(Class<T> service) {
        return getInstance().create(service);
    }

    public static TestService getTestService() {
        return getAPIService(TestService.class);
    }


}

TestService 实例

public interface TestService {

    //上传文件
    @POST("")
    Observable<BaseDataBean> upLoadFile(@Body MultipartBody requestBody);

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值