Я работаю над анализом веб-сайта в моем приложении.
Это веб-сайт: https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
Поскольку у меня возникли некоторые проблемы с этим, я сначала попытался получить весьвеб-сайт, использующий класс, расширяющий AsyncTask.
Вот код, который получает ВСЕ от веб-сайта выше:
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls)
{
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try
{
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
}
Однако, если вы зайдете на веб-сайт, я хочу только часть послеставки.Мне нужно отредактировать приведенный выше код, чтобы он возвращал только то, что мне нужно.
Исходя из того, что я понимаю, я знаю, что мне нужно изменить ответ String на ArrayList, и мне нужно изменить цикл while, ноЯ не знаю, что именно мне следует делать.
Я пытался использовать следующий код для изменения метода, но он НЕ работал.
private class DownloadWebPageTask extends AsyncTask<String, Void, ArrayList<String>> {
@Override
protected ArrayList<String> doInBackground(String... urls)
{
ArrayList<String> response = new ArrayList<String>();
for (String url : urls)
{
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try
{
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = response.toString();
while ((s = buffer.readLine()) != null)
{
JSONArray ja = new JSONArray(s);
for (int i = 0; i < ja.length(); i++) {
JSONObject jo = (JSONObject) ja.get(i);
response.add(jo.getString("rates"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
}
Любая помощь будет принята с благодарностью.
@ Dheeraj, ОБНОВЛЕНИЕ:
while ((s = buffer.readLine()) != null)
{
JSONArray ja = new JSONObject().getJSONArray("rates");
response.add(ja.toString());
}
Это то, что у меня есть, Dheeraj.Я застрял на том, как предоставить буфер для JSONObject.Вы можете мне помочь?