Android PUT和POST请求转换为GET

时间:2015-08-03 22:36:29

标签: android android-volley retrofit

我已经测试了Volley和Retrofit libs对我的服务器的GET和POST请求。服务器将它们显示为GET请求。 iOS AFNetworking请求相同的api工作正常。为什么会这样?

PS。 我将此代码用于Volley,在inet的所有示例中,只需要POST方法和' getParams'。在我的案例中没有调用getParams

public void createSession(final String guid,
                          final String name,
                          final String comment,
                          final Date startDate,
                          final Date endDate,
                          final BooleanCallback callback) {

    JsonObjectRequest registerRequest = new JsonObjectRequest(Request.Method.POST, ServerAPIBaseURLString + "sessions/",
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {

                }
            }
    ) {
        @Override
        public Map<String, String> getHeaders() {
            return headers();
        }

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("uuid", guid);
            params.put("name", name);
            params.put("comment", comment);
            params.put("start_date", timestampRepresentation(startDate));
            params.put("end_date", timestampRepresentation(endDate));

            return params;
        }

    };

    queue.add(registerRequest);
}

我发现iOS登录服务器是(401无所谓)

&#34; PUT / api / sessions / HTTP / 1.1&#34; 302 0
&#34; PUT / ru / api / sessions / HTTP / 1.1&#34; 401 210

但Android

&#34; POST / api / sessions / HTTP / 1.1&#34; 302 0
&#34; GET / ru / api / sessions / HTTP / 1.1&#34; 405 114

1 个答案:

答案 0 :(得分:0)

你能否将代码分成几部分,看它是否有效。

会是这样的:

你的听众成功:

Response.Listener<String> listener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {


            }
        };

你的听众有错误:

Response.ErrorListener errorListener = new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {


            }


        };

使用params的实际发布请求:

StringRequest request = new StringRequest( Request.Method.POST, url, listener, errorListener){

            protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();

                params.put("uuid", uuid);

                return  params;
            };

        };

致电请求:

queue.add(request);