安卓上的"Value Error of type java.lang.String cannot be converted to JSONArray"错误



我试图从我的API与Android得到响应。

我要做的是获得JSONArray作为我的API的响应,但我得到以下错误:

java.lang.String类型的值错误无法转换为JSONArray

我从API发送的响应是:

[
   {
      "name1":"Peter",
      "name2":"Andrew"
   }
]

这是我用来从Android中检索它的代码:

JsonArrayRequest JsonRequest = new JsonArrayRequest (Request.Method.GET, url, null, new Response.Listener<JSONArray>()
{
   @Override public void onResponse(JSONArray response) {
       if(response!=null){
          Toast.makeText(getApplicationContext(), "Data has been sent correctly.", Toast.LENGTH_LONG).show();
          finish();
       }else{
       }
   }
}, new Response.ErrorListener() {
      @Override public void onErrorResponse(VolleyError error) {
           Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
      }
});

但是它总是进入错误块

我知道有很多关于这个错误的问题,但大多数问题都与错误的JSON创建有关。我认为这不是这里的问题,因为我已经创建了JsonArray是在Java中创建的,但在这种情况下,数组上只有一个元素(而不是两个,如javadocs上的例子)。

我怎么能避免得到这个错误,如果我已经使用JSONArray?

提前感谢!

经过几个小时的调试和查看我的代码后,我发现我的问题是我在url的元素之间有一个空格。如下:

String url = "http://myIP/application/getNames/{"user":"user192", "password":"" + passwordText + ""}";
                                                                     ^

似乎Postman应用程序不关心空间和调用API没有空间(因为从邮差的请求工作得很好),但当你试图从Android发送请求时,它考虑到空间,不修改url,它试图调用API作为url点。因此,在API中无法正常检索数据。

当你去掉那个空格时,它就像一个魅力。

注::正如@SomasundaramMahesh指出的,我不得不使用StringRequest而不是JsonArrayRequest。我不明白为什么我必须改变它,因为我正在检索JSONArray .

相关内容

最新更新