2016-08-22 4 views
0

Also muss ich herausfinden, wie ich auf den Wert zugreifen kann, den ich von meiner ersten Antwort in meiner Sekunde bekomme. Ich würde denken, dass ich es einfach auf eine Variable speichern und in einer anderen Anfrage darauf zugreifen könnte. Dies scheint jedoch nicht der Fall zu sein.Zugriff auf OKHttp Response Body

Hier ist das Bit, das mir Probleme gibt. Also ist meine erste Anfrage, mir ein Token zu bekommen, und dann muss ich das verwenden, was in meinem zweiten Request in commatoken gespeichert ist.

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()); 

      } 
     }); 
    } 

Antwort

2

Ich denke, wir response.body().string() nur einmal nennen kann .... so, dass die Daten in einen String-Variable speichern erste .. und es Zugang überall dort, wo Sie es brauchen.

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

Sie rufen response.body(). String() zweimal ...

Mehr Infos https://stackoverflow.com/a/27922818/3552066

+0

Hmm auch dann die zweiten Komma-Token in dem neuen Antrag sind immer noch rot sagend, dass es Symbol "commatoken" nicht lösen kann –

+1

Erklären Sie commatoken an der Spitze ... bilden Sie es global –

+0

Hmm aus irgendeinem Grund die URL nimmt mich nicht an, diesen Schnurwert in die Überschrift setzend ... –

Verwandte Themen