Retrofit2 - 406不可接受

时间:2016-08-13 20:05:15

标签: android retrofit2

当我使用 postman 与端点进行通信时,它工作正常但是使用 Retrofit2 我收到了406 Not Acceptable消息,如 LogCat 。我在SO中找到了一些相关问题我尝试了接受的答案解决方案(在标题中添加内容类型)但是对我不起作用

改造配置

public interface AndroidAppService {
....
@Headers({
      "Content-Type: text/html; charset=UTF-8" // I also tried application/json
  }) @GET("subscribers/{msisdn}/verify") Observable<HeaderResponse> checkPhoneNumber(
      @Path("msisdn") String phoneNumber);
....
class Factory {
public static AndroidAppService create(String baseUrl) {

  HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
  interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
  OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

  Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl)
      .client(client)
      .addConverterFactory(GsonConverterFactory.create())
      .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
      .build();
  return retrofit.create(AndroidAppService.class);
  }
 } 
}

logcat的

08-13 18:59:02.376 17766-22236/com.androidapp D/OkHttp: --> GET http://androidapp.net/bo/web/app_dev.php/api/subscribers/0827873/verify http/1.1
08-13 18:59:02.376 17766-22236/com.androidapp D/OkHttp: --> END GET

08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: <-- 406 Not Acceptable http://com.androidapp.com
/bo/web/app_dev.php/api/subscribers/072736263/verify (10680ms)
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Date: Sat, 13 Aug 2016 18:58:07 GMT
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Server: Apache/2.4.7 (Ubuntu)
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: X-Powered-By: PHP/5.5.9-1ubuntu4.14
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Cache-Control: no-cache
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: X-Debug-Token: d28d0a
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: X-Debug-Token-Link: http://com.androidapp/bo/web/app_dev.php/_profiler/d28d0a
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Keep-Alive: timeout=5, max=100
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Connection: Keep-Alive
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Transfer-Encoding: chunked
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: Content-Type: text/html; charset=UTF-8
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: OkHttp-Sent-Millis: 1471113729149
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: OkHttp-Received-Millis: 1471113729517
08-13 18:42:09.512 6350-6927/com.androidapp D/OkHttp: <-- END HTTP

1 个答案:

答案 0 :(得分:2)

确定响应并相应地指定Accept标头。请参阅:https://stackoverflow.com/a/14252326/5250273

提示:了解AcceptContent-Type之间的区别。