Как получить данные JSON из API без использования сторонней библиотеки в Android? - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу получить данные json из веб-API, я ранее использовал Retrofit для этого, но я не хочу использовать какую-либо стороннюю библиотеку.

Я знаю, что могу использовать HttpURLConnection или HttpClient, но нет подходящего сообщения для этого, и они слишком старые, и в каком-то сообщении они говорили, что это устарело, так что если у вас есть другиеРешение с использованием HttpUrlConnection и HttpClient или без него, пожалуйста, дайте мне знать.

И, пожалуйста, скажите мне, как анализировать эти данные до того, как я использовал библиотеку GSONParser.

Вот мойПример API:

https://www.mocky.io/v2/5b8126543400005b00ecb2fe

1 Ответ

0 голосов
/ 03 декабря 2018

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

Подумайте об этом: класс, который я могу назвать FileContentReader методом getContentFromUrl, будет извлекать ваши данные JSON какСтрока, которую можно затем проанализировать, используя JSONObject или JSONArray в соответствии с вашей файловой структурой.

public class FileContentReader {
private Context appContext;

    public FileContentReader(Context context){
        this.appContext=context;
    }
    public String getContentFromUrl(String url)
    {
        StringBuilder content = new StringBuilder();
        try {
            URL u = new URL(url);
            HttpURLConnection uc = (HttpURLConnection) u.openConnection();
            if (uc.getResponseCode()==HttpURLConnection.HTTP_OK) {

                InputStream is = uc.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                String line;
                while ((line = br.readLine()) != null) {

                    content.append(line).append("\n");

                }

            }else{

                throw new IOException(uc.getResponseMessage());
            }
        } catch(StackOverflowError | Exception s){
                s.printStackTrace();
            } catch(Error e){
                e.printStackTrace();
            }


            return content.toString();


    }
}

Вы можете использовать этот код внутри асинхронной или любой фоновой задачи:

FileContentReader fcr= new FileContentReader(getApplicationContext());

String data= fcr.getContentFromUrl("myurl");

if(!data.isEmpty())
{
try{
JSONArray ja = new JSONArray(data);
//... ou can then access and manupilate your data the way you want
}catch(JSONException e)
{
e.printStackTrace();}

}
...