如何在不使用Android的任何第三方库的情况下从基于json的api获取json数据?

问题描述 投票:1回答:1

我想从Web api获取json数据,我以前是使用Retrofit的,但是我不想使用任何第三方库。

我知道我可以使用HttpURLConnectionHttpClient,但是没有合适的帖子,而且它们太旧了,在某些帖子中,他们告诉我们它已被弃用,因此,如果您有使用HttpUrlConnection和HttpClient或不使用HttpClient的请让我知道。

并且请告诉我在使用GSONParser库之前如何解析该数据。

这是我的示例api:

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

java android httpurlconnection android-networking androidhttpclient
1个回答
2
投票

嘿,您可以使用取决于您的方法来检索数据。例如,我从未使用第三方库从服务器检索数据。

考虑一下:我可以使用方法FileContentReader命名为getContentFromUrl的类,它将以字符串形式获取JSON数据,然后可以根据文件结构使用JSONObjectJSONArray对其进行解析。

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

}
© www.soinside.com 2019 - 2024. All rights reserved.