HttpsURLConnection Cloudflare API FileNotFoundException

#java #android #https #filenotfoundexception

#java #Android #https #исключение filenotfoundexception

Вопрос:

Я пытаюсь создать приложение для Android и пытаюсь прочитать свою статистику с моей панели управления CloudFlare. Странно то, что если мой код достигнет строки ins = con != null ? con.getInputStream() : null; , он скажет «Исключение FileNotFoundException». Заголовки устанавливаются так, как они должны. Вот цитата из документации CF API:

Представление панели мониторинга предоставляет как итоговые данные, так и данные временных рядов для данной зоны и периода времени по всей сети CloudFlare. ПОЛУЧИТЬ /зоны/:идентификатор зоны / аналитика / панель мониторинга — https://api.cloudflare.com/#zone-analytics-dashboard

Некоторые параметры являются необязательными, я уже дважды проверил свои данные, и они отлично работают в Postman.

Я пытался использовать http, но CF этого не позволяет.

Мой код:

 class JsonRequest extends AsyncTask<String, String, String> {
private String readStream(InputStream is) {
    try {
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
        int i = is.read();
        while (i != -1) {
            bo.write(i);
            i = is.read();
        }
        return bo.toString();
    } catch (IOException e) {
        return "";
    }
}

protected String doInBackground(String... params) {
    URL myurl = null;
    try {
        myurl = new URL(params[0]);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    HttpsURLConnection con = null;
    try {
        con = (HttpsURLConnection)myurl.openConnection();
        con.setRequestProperty("X-Auth-Email", "email");
        con.setRequestProperty("X-Auth-Key", "key");
        con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        con.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
        con.setRequestProperty("Accept","*/*");
        con.setDoOutput(false);
    } catch (IOException e) {
        e.printStackTrace();
    }
    InputStream ins = null;
    try {
        ins = con != null ? con.getInputStream() : null; // FileNotFoundException
    } catch (IOException e) {
        e.printStackTrace();
    }
    InputStreamReader isr = new InputStreamReader(ins);
    BufferedReader in = new BufferedReader(isr);
    try {
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return readStream(ins);
    }
}