【问题标题】:How do i send Delete request using Volley with Json object as a parameter?如何使用带有 Json 对象作为参数的 Volley 发送删除请求?
【发布时间】:2017-08-16 11:12:17
【问题描述】:

我的 put 方法工作正常,但只是将 put 请求更改为 Delete 然后它不起作用,我什至尝试发送它的标头。但仍然无法正常工作。我什至尝试过 Json 对象来设置参数。提前致谢。

StringRequest stringRequest = new StringRequest(Request.Method.DELETE, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.d("blalala", response);
                String qtyReserved1 = response.toString();
                   Toast.makeText(mContext, "ok" + qtyReserved1, Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(mContext, "not ok" + username + Integer.toString(inventoryId), Toast.LENGTH_SHORT).show();
            }
        })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("screen_name", username);
                params.put("inventory_id", Integer.toString(inventoryId));
                params.put("pending", "true");
                return params;
            }
            @Override
            public String getBodyContentType() {
                return "application/json";
            }
        };
        MySingleton.mySingletonInstance(mContext.getApplicationContext()).addToRequestque(stringRequest);

【问题讨论】:

  • “它不工作”。你是什​​么意思。你有什么错误吗?还是您的服务器没有收到您的请求?
  • 服务器没有收到请求,我猜
  • 你的服务器是哪台。是 PHP、.Net 还是 Java
  • 它的php服务器..我的代码有什么错误吗,非常感谢

标签: java android json


【解决方案1】:

当您使用 DELETE 方法时,Volley 库不发送正文。您可以尝试其他库。我正在使用 loopj 库为您提供一个示例

在你的 gradle 中添加依赖

 compile 'com.loopj.android:android-async-http:1.4.9'

请求您的网络 API

  RequestParams requestParams = new RequestParams();
    requestParams.put("screen_name", "mariyam.shimaanath");
    requestParams.put("inventory_id", 19);
    requestParams.put("pending", true);

    String url="192.168.4.31/api/canteen/cart";

    new AsyncHttpClient().delete(url, requestParams, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
          String rs = new String(responseBody);

           // do whatever you want

        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

        }
    });

【讨论】:

  • 兄弟,onFailure Throwable 错误消息说它的错误请求
  • 在日志中,E/EGL_emulation: tid 16688: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
【解决方案2】:

经过大量研究,感谢上帝,我设法解决了这个问题,并没有完全解决 Volley 中删除请求中的问题。但是,我不得不改变我需要从服务器端请求的方法。我将请求更改为发布方法,我知道这可能不是好的做法和解决方案,但现在我设法从服务器中删除。这就是我需要的。

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2017-09-18
    • 2014-11-14
    • 2016-02-06
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多