2016-08-22 3 views
0

Так что мне нужно выяснить, как получить доступ к значению, которое я получаю от своего первого ответа в секунду. Я бы подумал, что я могу просто сохранить его в переменной и получить доступ к нему в другом запросе. Однако, похоже, это не так.Доступ к OKHttp Response Body

Вот немного, что дает мне проблемы. Поэтому мой первый запрос получает мне токен, а затем мне нужно использовать то, что хранится в commatoken в моем втором запросе.

private final OkHttpClient client = new OkHttpClient(); 

    public void run() throws Exception { 
     Request request = new Request.Builder() 
       .url(API_URL + authPreferences.getToken()) 
       .build(); 

     client.newCall(request).enqueue(new Callback() { 
      public void onFailure(Call call, IOException e) { 
       e.printStackTrace(); 
      } 


      public void onResponse(Call call, Response response) throws IOException { 
       if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); 

       Headers responseHeaders = response.headers(); 
       for (int i = 0, size = responseHeaders.size(); i < size; i++) { 
        System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i)); 
       } 

       System.out.println(response.body().string()); 
       String commatoken = response.body().string(); 
      } 
     }); 

     Request dataRequest = new Request.Builder() 
       .header("Authorization", "jwt"+commatoken) 
       .url(ChffrMe_URL).build(); 

     client.newCall(dataRequest).enqueue(new Callback() { 
      @Override 
      public void onFailure(Call call, IOException e) { 
       e.printStackTrace(); 
      } 

      @Override 
      public void onResponse(Call call, Response response) throws IOException { 
       if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); 

       Headers responseHeaders = response.headers(); 
       for (int i = 0, size = responseHeaders.size(); i < size; i++) { 
        System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i)); 
       } 

       System.out.println(response.body().string()); 

      } 
     }); 
    } 

ответ

2

Я думаю, что мы можем назвать response.body().string() только один раз .... поэтому сохраните эти данные в строковую переменную первый .. и доступ к нему везде, где вам это нужно.

String response_data; 
.............. 
response_data = response.body().string(); 

Вы звоните response.body(). Строку() дважды ...

Подробнее https://stackoverflow.com/a/27922818/3552066

+0

Хмм даже тогда второй маркер запятой в новом запросе еще красная говоря, что он не может разрешить символ «commatoken» –

+1

Объявление commatoken наверху ... сделайте его глобальным –

+0

Хмм по какой-то причине URL-адрес не принимает меня, помещая это строковое значение в заголовок ... –

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

  • Нет связанных вопросов^_^