我正在尝试为Android创建一个应用程序,我正试图从我的CloudFlare Dashboard中读取我的统计数据。
奇怪的是,如果我的代码到达行ins = con != null ? con.getInputStream() : null;
,它将说“FileNotFoundException”。
标题按其应有的方式设置。以下是CF API文档的引用:
仪表板视图提供整个CloudFlare网络中给定区域和时间段的总计和时间序列数据。 GET / zones /:zone_identifier / analytics / dashboard - 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);
}
}