2016-03-25 3 views
0

Im пытается сделать заявку с волейболом.Невозможно сделать jsonarrayrequest с волейболом

Параметр запроса представляет собой массив json.

Ниже мой параметр запроса

[ 
"Type", 
{ 
    "User": "email", 
    "password": "dimmer", 

} 
] 

У меня есть метод frameJsonArray, обрамляющих выше JSON и им сделать запрос пост следующим образом,

JsonArrayRequest jsonObjectRequest = new JsonArrayRequest(Request.Method.POST, Constants.requestUrl, frameJsonArray(), 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
        Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show(); 


       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        hideDialog(); 
        error.printStackTrace(); 

       } 
      } 
    ); 

получать ошибку Im в приведенной выше строке кода где im делает запрос. Как я могу получить эту сортировку?

Ниже мой журнал ошибок

Error:(162, 46) error: constructor JsonArrayRequest in class JsonArrayRequest cannot be applied to given types; 
required: String,Listener<JSONArray>,ErrorListener 
found: int,String,JSONArray,<anonymous Listener<JSONObject>>,<anonymous ErrorListener> 
reason: actual and formal argument lists differ in length 

Ниже мой frameJsonArrayMethod

public JSONArray frameJsonArray() { 
    JSONObject jsonObject = new JSONObject(); 
try { 
    jsonObject.put("login_type", "Android"); 
    jsonObject.put("username", email); 
    jsonObject.put("password", password); 
    jsonObject.put("short_name", null); 
    jsonObject.put("ip","123.421.12.21"); 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 
JSONArray jsonArray = new JSONArray(); 
jsonArray.put("Login"); 
jsonArray.put(jsonObject); 

Log.d(TAG, "he;ll " + jsonArray.toString()); 
Toast.makeText(getApplicationContext(), jsonArray.toString(), Toast.LENGTH_SHORT).show(); 
return jsonArray; 

}

+0

Что ошибка? –

+0

Я опубликовал журнал ошибок –

+0

, пожалуйста, исправьте свои данные json. полная двойная квота электронной почты. как «электронная почта» –

ответ

1
JsonArrayRequest jsonObjectRequest = new JsonArrayRequest(Request.Method.POST, Constants.requestUrl, frameJsonArray(), 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
        Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show(); 


      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       hideDialog(); 
       error.printStackTrace(); 

      } 
     } 
); 

Изменение JSONObject к JSONArray в onResponse()

EDIT ошибка приходит, потому что есть только один конструктор в JsonArrayRequest т.е.

public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener){} 

источник https://android.googlesource.com/platform/frameworks/volley/+/e7cdf98078bc94a2e430d9edef7e9b01250765ac/src/com/android/volley/toolbox/JsonArrayRequest.java

вы используете какой-то конструктор с 5 аргументов.

+1

все еще im получаю ту же ошибку –

+0

вы можете разместить свой код внутри frameJsonArray() –

+0

я добавил его –

1

один раз проверьте JSON, неправильный формат, вы пропустили двойную кавычку.

[ 
"Type", 
{ 
    "User": "email /** you missed double quote here **/, 
    "password": "dimmer", 

} 
] 
+0

Я исправил его, ошибка при создании запроса на массив json –

+0

принять ответ, если он используется для u. – shobhan

+0

фактическая ошибка при создании jsonarrayrequest, которая еще не решена –

1
JsonArrayRequest req = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
        Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show();    
        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         VolleyLog.d(TAG, "Error: " + error.getMessage()); 
         pDialog.hide(); 
        } 
       }); 

Источник: http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

+0

да, но как я могу отправить свой параметр запроса, используя приведенный выше фрагмент кода? –

+0

http://stackoverflow.com/a/18052417/4854450, но для запроса API лучше использовать Retrofit с GSON, это быстрее, чем Volley и ASyncTask. –

Смежные вопросы