我们用retrofit2.0 请求时最好把log带上,可以很详细的告诉我们出错在哪里,AS里导包
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
在请求里添加日志管理
@POST设置 2.0后这样会出问题String BASE_URL = "http://www.xxx.com/test/rest/user/";HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); logging.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient client = new OkHttpClient.Builder().addInterceptor(logging).build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(client) .build();
@POST("/{user}/setDeviceName") Observable<String> testPost( @Path("user") String user);
测试
api.testPost("test1") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(System.out::println, throwable -> { System.out.println(throwable.getMessage()); });运行log
D/OkHttp: --> POST http://www.xxx.com/test1/setDeviceName http/1.1
post的url路径怎么变成这样了,按照理解应该是
http://www.xxx.com/test/rest/user/test1/setDeviceName@POST里面可以写入一个完整的url,或者用来拼接,看了其他人的博客资料,2.0后base_url要以"/"结尾,@POST @POST等请求不要以“/”开头,然后我把@POST 修改下
@POST("{user}/setDeviceName") Observable<String> testPost( @Path("user") String user);
D/OkHttp: --> POST http://www.xxx.com/beehive/rest/user/test1/setDeviceName http/1.1