一尘不染

如何使用HttpURLConnection而不是Volley获取JSON对象?

json

我想做的是从而HttpURLConnection不是JsonObjectRequest()从Volley库中使用一些数据。

以下是用于从服务器中获取JSON对象的代码。

JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,"myURL", null, new Response.Listener<JSONObject>();

我试图改变nullJSONObjectmyURL改为null。但这并没有解决。


阅读 169

收藏
2020-07-27

共1个答案

一尘不染

中的url JsonObjectRequest()不是可选的,并且JSONObject参数用于将带有请求的参数发布到url。

从文档中:http
:
//afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest.html

http://developer.android.com/training/volley/index.html

JsonObjectRequest

public JsonObjectRequest(int方法,字符串url,JSONObject
jsonRequest,Response.Listener侦听器,Response.ErrorListener
errorListener)创建一个新请求。

参数:

method-要使用的HTTP方法

url-从中获取JSON的URL

jsonRequest-与请求一起发布的JSONObject。允许为空,表示没有参数将与请求一起发布。

侦听器-侦听器以接收JSON响应

errorListener-错误侦听器,如果为null则忽略错误。

使用HttpURLConnection

http://developer.android.com/reference/java/net/HttpURLConnection.html

该代码将是这样的:

 public class getData extends AsyncTask<String, String, String> {

        HttpURLConnection urlConnection;

        @Override
        protected String doInBackground(String... args) {

            StringBuilder result = new StringBuilder();

            try {
                URL url = new URL("https://api.github.com/users/dmnugent80/repos");
                urlConnection = (HttpURLConnection) url.openConnection();
                InputStream in = new BufferedInputStream(urlConnection.getInputStream());

                BufferedReader reader = new BufferedReader(new InputStreamReader(in));

                String line;
                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

            }catch( Exception e) {
                e.printStackTrace();
            }
            finally {
                urlConnection.disconnect();
            }


            return result.toString();
        }

        @Override
        protected void onPostExecute(String result) {

            //Do something with the JSON string

        }

    }
2020-07-27