【问题标题】:No response from Volley JSONObject POST requestVolley JSONObject POST 请求没有响应
【发布时间】:2018-08-29 00:39:43
【问题描述】:

我想使用带有单个参数的 Volley 发送 JSONObject POST 请求。我编写并包含在下面的代码似乎在 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);
}

【问题讨论】:

  • 使用Log.d(TAG, "onResponse: MySightings response "+ response.toString());查看响应值

标签: java android android-volley


【解决方案1】:

基兰 M.

请使用以下代码。

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

您应该注意响应值。

现在这是调试方法之一。

【讨论】:

  • 谢谢,但我没有得到任何回应,消息没有出现在 logcat 中。
  • 哦,是吗?我认为 'JsonObjectRequest mySightingsRequest = new JsonObjectRequest(Request.Method.POST, ConnectionURLs.MY_SIGHTINGS, obj, new Response.Listener()' 行发生错误。现在您无法返回有关 'onResponse()' 的值。
  • 程序运行时Logcat中没有JSONObjectRquest错误,只是似乎没有响应。
  • 现在,请尝试使用辅助类。如果你愿意,我会发送示例类文件和方法。
  • 我实现了一个自定义助手类,但仍然没有响应。
【解决方案2】:

可以询问服务器是否可以接收json

或试试这个代码:

String reuquestBody = "Username="+username

然后将obj替换为requestBody

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多