#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);
}
}