2016-08-20 7 views
0

Итак, я пытаюсь вернуть ответ JSON, у которого есть токен доступа, который будет использоваться для моих будущих запросов к этому API. Однако, когда я отправляю свой запрос, он дает мне ответ 200, но он не прошел.Android GET Request

Вот немного кода, который, я считаю, терпит неудачу. Я не уверен, как долго длится , но у меня есть приложения, которые еще не запрашивают аутентификацию.

public class RetrieveFeedTask extends AsyncTask<String, Void, String> { 

     private Exception exception; 

     protected void onPreExecute() { 
      progressBar.setVisibility(View.VISIBLE); 
      responseView.setText(""); 
     } 

     protected String doInBackground(String... urls) { 

      // Do some validation here 

      try { 
       URL url = new URL(API_URL + authPreferences.getToken()); 
       Log.i("URL", url.toString()); 
       HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
       urlConnection.setRequestMethod("GET"); 
       int responseCode = urlConnection.getResponseCode(); 
       System.out.println("GET Response code:" + responseCode); 
       //urlConnection.addRequestProperty("client_id", ClientId); 
//    urlConnection.addRequestProperty("client_secret", ClientSecret); 
//    urlConnection.setRequestProperty("Authorization", "JWT " + authPreferences); 

       try { 
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
        StringBuilder stringBuilder = new StringBuilder(); 
        String line; 
        while ((line = bufferedReader.readLine()) != null) { 
         stringBuilder.append(line).append("\n"); 
        } 
        bufferedReader.close(); 
        return stringBuilder.toString(); 
       } finally { 
        urlConnection.disconnect(); 
       } 
      } catch (Exception e) { 
       Log.e("ERROR", e.getMessage(), e); 
       return null; 
      } 
     } 

     protected void onPostExecute(String response) { 
      if (response == null) { 
       response = "THERE WAS AN ERROR"; 
      } 
      progressBar.setVisibility(View.GONE); 
      Log.i("INFO", response); 
      responseView.setText(response); 
      // 
      // TODO: check this.exception 
      // TODO: do something with the feed 

//   try { 
//    JSONObject object = (JSONObject) new JSONTokener(response).nextValue(); 
//    String requestID = object.getString("requestId"); 
//    int likelihood = object.getInt("likelihood"); 
//    JSONArray photos = object.getJSONArray("photos"); 
//    . 
//    . 
//    . 
//    . 
//   } catch (JSONException e) { 
//    e.printStackTrace(); 
//   } 
     } 
    } 

ответ

1

Лично я не стал писать собственный код для подключения по протоколу HTTP.

Используйте OKHttp.

http://square.github.io/okhttp/

Вот некоторые хорошие рецепты:

https://github.com/square/okhttp/wiki/Recipes

Somemore учебник:

https://guides.codepath.com/android/Using-OkHttp

OKHttp будет обрабатывать аутентификацию для вас так, как вы установите его, и будет автоматически обновляться, когда он не сможет аутентифицироваться для вас.

OKHttp сделает вашу жизнь легкой. Это, как говорится, я думаю, что изучение того, как все это делается с самим собой, важно и хорошо, но кто-то еще построил для вас колесо, и он работает потрясающе.

+0

Итак, что смешно, OAuth 2.0 Playground получает необходимую мне информацию. Я просто не знаю, что они используют, что я не использую ... –