Нет ответа от Volley JSONObject POST-запроса - PullRequest
0 голосов
/ 29 августа 2018

Я хочу отправить запрос JSONObject POST с Volley, который принимает один параметр. Код, который я написал и включил ниже, похоже, не получает никакого ответа в методе onResponse. Я не понимаю, в чем может быть проблема.

Я проверил на стороне сервера, и это работает как надо, с кодом PHP, повторяющим массив данных в кодировке JSON.

public void mySightingsJsonRequest() {


    //get username held in shared preferences (KMcE)
    HashMap<String, String> user = newSession.getUsername();
    final String username = user.get(SessionUtility.KEY_USERNAME);

    JSONObject obj = new JSONObject();
    try {
        obj.put("Username", username);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    JsonObjectRequest mySightingsRequest = new JsonObjectRequest(Request.Method.POST, ConnectionURLs.MY_SIGHTINGS, obj, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d(TAG, "onResponse: MySightings response");
            try {
                JSONArray jsonArray = response.getJSONArray("server_response");

                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject sighting = jsonArray.getJSONObject(i);

                    int sightingRecordingNumber = sighting.getInt("Recording Number");
                    String sightingImgURL = sighting.getString("IMG");
                    String sightingCommonName = sighting.getString("Common Name");
                    String sightingUsername = sighting.getString("Submitted by");
                    double sightingLongitude = sighting.getDouble("Longitude");
                    double sightingLatitude = sighting.getDouble("Latitude");

                    mSightingList.add(new SightingSingle(sightingRecordingNumber, sightingImgURL, sightingCommonName, sightingUsername, sightingLatitude, sightingLongitude));

                }
                mMySightingsAdapter = new MySightingsAdapter(getActivity(), mSightingList);
                mMySightingRecyclerView.setAdapter(mMySightingsAdapter);

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

        }
    });

    mRequestQueue.add(mySightingsRequest);
}

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Вы можете спросить, может ли сервер получать JSON

или попробуйте этот код:

String reuquestBody = "Username="+username

и затем замените obj на requestBody

0 голосов
/ 08 сентября 2018

добавить это в блок try ...

    try {
            JSONObject jsonObject = new JSONObject(response);
            //this will check whether response has "server_response" array or not
            if(jsonObject.has("server_response")){
                   JSONArray jsonArray = jsonObject.getJSONArray("server_response");
                   for (int i = 0; i < jsonArray.length(); i++) {
                   //your code as it is....
            }

надеюсь, это поможет вам

0 голосов
/ 29 августа 2018

Киран М.

Пожалуйста, используйте следующий код.

Log.d(TAG, "onResponse: MySightings response" + response.toString());

Вы должны посмотреть значение ответа.

Теперь это один из методов отладки.

...