Как получить ответ на YouTube YouTube API - Android - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь получить ответ json от YouTube API v3, но по какой-то причине я получаю код ответа 404. Я копирую ссылку в свой браузер, и я могу просмотреть результат просто отлично. Я не знаю, что я делаю неправильно, вот код:

try
    {
        URL url = new URL(query);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

        urlConnection.setDoOutput(true);
        urlConnection.setConnectTimeout(5000);
        urlConnection.setRequestMethod("GET");

        int respCode = urlConnection.getResponseCode();

        if (respCode == 200) {
            InputStream in = urlConnection.getInputStream();
            //String response = convertStreamToString(in);
        }

        urlConnection.disconnect();

    } catch (Exception e) {
        e.printStackTrace();

    }

Это строка запроса:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=%22=test%22&type=video&key=myapikey

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я создаю класс HTTPHandler ...

public class HttpHandler {

private static final String TAG = HttpHandler.class.getSimpleName();

public HttpHandler() {
}

public String makeServiceCall(String reqUrl) {
    String response = null;
    try {
        URL url = new URL(reqUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        // read the response
        InputStream in = new BufferedInputStream(conn.getInputStream());
        response = convertStreamToString(in);
        in.close();
    } catch (MalformedURLException e) {
        Log.e(TAG, "MalformedURLException: " + e.getMessage());
    } catch (ProtocolException e) {
        Log.e(TAG, "ProtocolException: " + e.getMessage());
    } catch (IOException e) {
        Log.e(TAG, "IOException: " + e.getMessage());
    } catch (Exception e) {
        Log.e(TAG, "Exception: " + e.getMessage());
    }

    return response;
}

private String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line).append('\n');
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return sb.toString();
}

}

Чтобы использовать его, я создаю новый HTTPHandler

HttpHandler sh = new HttpHandler();
String url = URL_API;
String jsonStr = sh.makeServiceCall(url);

Оттуда я могу анализировать jsonStr и получать информацию.

Это работает для меня ....

0 голосов
/ 02 июля 2018

Мне удалось решить эту проблему, добавив:

        urlConnection.setDoOutput(false);
        urlConnection.setDoInput(true);
        urlConnection.setUseCaches(false);
        urlConnection.setRequestMethod("GET");
        urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
...