没有得到响应Volley android

时间:2016-06-09 12:24:41

标签: java android android-volley

enter image description here这是我的代码,我正在使用排球来调用网络服务

private void sendRequest(){

    StringRequest stringRequest = new StringRequest(JSON_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    showJSON(response);


                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_LONG).show();
                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

有什么不对,得到nullPointerExeption

URL:

https://www.bgr.ionidea.com/math_lms/webservice/rest/server.php?wstoken=840e7d1cb52ca12239b01926310e0c68&wsfunction=local_math_get_android_version&moodlewsrestformat=json

ShowJson方法

 private void showJSON(String json){
        ParseJSON pj = new ParseJSON(json);
        pj.parseJSON();
        CustomList cl = new CustomList(this, ParseJSON.id,ParseJSON.app_version);
        listView.setAdapter(cl);
    }

解析JSON类

public class ParseJSON {

    public static String[] id;
    public static String[] app_version;


    public static final String JSON_ARRAY = "result";
    public static final String KEY_ID = "id";
    public static final String KEY_APP_VERSION = "app_version";


    private JSONArray users = null;

    private String json;

    public ParseJSON(String json){
        this.json = json;
    }

    protected void parseJSON(){
        JSONObject jsonObject=null;
        try {
            jsonObject = new JSONObject(json);
            users = jsonObject.getJSONArray(JSON_ARRAY);

            id = new String[users.length()];
            app_version = new String[users.length()];


            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
                id[i] = jo.getString(KEY_ID);
                app_version[i] = jo.getString(KEY_APP_VERSION);

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

解决方案:

我发现您在课堂上id字段中的String字段为response而在Integer中,您将获得"id":1值。这就是错误发生的原因。

enter image description here

说明:

在您的回复中,您会收到"id":"1",但实际上您需要public static String[] id;

更改:

1。)将此public static Integer[] id;更改为id[i] = jo.getString(KEY_ID);

2。)将此id[i] = jo.getInt(KEY_ID);更改为<a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <p>any long short text does not matter any long short text does not matter</p> <br> <p>any long short text does not matter</p> <br> <select> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> </select> <a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <a href="">Link</a> <br> <p>any long short text does not matter any long short text does not matter</p> <br> <p>any long short text does not matter</p> <br>

答案 1 :(得分:1)

我认为它必须对你的JSON做些什么。 你首先要求一个JSONObject。 在这个JSONObject中,您需要一个名为JSONArray的结果。 在这个JSONArray中,你需要2个值:id和app_version。 所以我认为JSON需要看起来像这样:

{
    "result": [
      {"id": "1", "app_version": "1"}
    ]
}

对于更多用户,它看起来像:

{
  "result": [
      {"id": "1", "app_version": "1"},
      {"id": "2", "app_version": "1"},
      {"id": "3", "app_version": "2"}
    ]
}

如果您无法更改JSON,则需要进行一些更改:

  1. 不要在开始时使用JSONObject,而是立即使用JSONArray开始,如users = new JSONArray(json);
  2. 就像@Ironman告诉你需要将你的id更改为int []而不是String []并使用getInt()代替getString()

答案 2 :(得分:0)

您的回复是:

[
  {
    "id": 1,
    "app_version": "1"
  }
]

这里是json对象的列表。对象包含&#34; id&#34;这是整数和&#34; app_version&#34;是字符串。您可以使用Gson库轻松解析此响应。以下是示例代码:

在build.gradle文件中添加此依赖项

compile 'com.google.code.gson:gson:2.2.4'

现在创建一个这样的类:

import com.google.gson.annotations.SerializedName;
public class ResponseObject {

    @SerializedName("id")
    public Integer id;
    @SerializedName("app_version")
    public String app_version;

}

现在,您可以使用以下方式解析您的回复:

Type listType = new TypeToken<ArrayList<ResponseObject>>() {
                    }.getType();
 List<ResponseObject> yourClassList = new Gson().fromJson(jsonArray, listType);

此处,jsonArray是您的响应数组。

希望这会对你有所帮助。