2016-12-15 24 views
1

Я создаю приложение с retrofit2 для сетевых вызовов. Мне нужно вызвать несколько API в Single Activity. Теперь я столкнулся с ошибкой 403-forbidden. Если я вызываю только один API, он работает нормально. Но если я использую несколько вызовов API один за другим, я сталкиваюсь с этой ошибкой.Android - Retrofit2 - 403-Forbidden

Мой метод CreateService ниже:

public static <S> S createService(Class<S> serviceClass, final String authToken) { 
     if (authToken != null) { 
      httpClient.addInterceptor(new Interceptor() { 
       @Override 
       public Response intercept(Interceptor.Chain chain) throws IOException { 
        Request original = chain.request(); 

        // Request customization: add request headers 
        Request.Builder requestBuilder = original.newBuilder() 
          .header("Authorization-Token", authToken) 
          .method(original.method(), original.body()); 

        Request request = requestBuilder.build(); 
        return chain.proceed(request); 
       } 
      }); 
     } 

//  OkHttpClient client = httpClient.readTimeout(60, TimeUnit.SECONDS).connectTimeout(60, TimeUnit.SECONDS).build(); 
     Dispatcher dispatcher = new Dispatcher(Executors.newFixedThreadPool(200)); 
     dispatcher.setMaxRequests(200); 
     dispatcher.setMaxRequestsPerHost(1); 

     OkHttpClient okHttpClient = httpClient.dispatcher(dispatcher).connectionPool(new ConnectionPool(100, 30, TimeUnit.SECONDS)).build(); 

     Retrofit retrofit = builder.client(okHttpClient).build(); 
     return retrofit.create(serviceClass); 
    } 

Что плохого в моем коде .. Как я могу справиться с этим?

+0

есть ли зависимость от ожидания на первый вызов апи завершить до сбрасывая 2-ым? –

+0

У всех API нет разных данных. Нет связи с этим – Amsheer

ответ

2

Вы уверены, что строка не пустая строка?

Не могли бы вы добавить лог-перехватчик и установить уровень журнала и предоставить журнал?

compile 'com.squareup.okhttp3:logging-interceptor:3.2.0' 

И STH так:

OkHttpClient.Builder okBuilder = new OkHttpClient.Builder(); 
    okBuilder.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC).setLevel 
      (HttpLoggingInterceptor.Level.BODY).setLevel(HttpLoggingInterceptor.Level.HEADERS)) 
+0

Как установить авторизационный токен с этим? – Amsheer

+0

Совсем нет. Использование вашего кода с этим будет предоставлять журнал, и мы можем увидеть, где проблема. –

+0

Хорошо. Мой журнал <- 403 Запрещенный http: //x.y.z/api/Technicians (976ms) Cache-Control: no-cache Pragma: no-cache Content-Length: 17 Content-Type: text/plain; charset = utf-8 Истекает: -1 Сервер: Microsoft-IIS/8.5 X-AspNet-версия: 4.0.30319 X-Powered by: ASP.NET Дата: Чт, 15 дек. 2016 12:27: 27 GMT <- END HTTP <- 403 Запрещено http: // xyz/api/Техники – Amsheer

Смежные вопросы