android – Volley POST请求,400错误

android – Volley POST请求,400错误,第1张

概述这是我第一次使用 JSON,但我正在尝试POST请求. 我想向这个网站发出POST请求http://jsonblob.com/api 当我使用asynctask httppost时,我的代码可以工作 private static final String url = "http://jsonblob.com/api/jsonBlob";@Overrideprotected void onCr 这是我第一次使用 JSON,但我正在尝试POST请求.

我想向这个网站发出POST请求http://jsonblob.com/api

当我使用asynctask httppost时,我的代码可以工作

private static final String url = "http://Jsonblob.com/API/JsonBlob";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    new PostJsonTask().execute();}private class PostJsonTask extends AsyncTask<VoID,VoID,VoID> {    @OverrIDe    protected VoID doInBackground(VoID... params) {        try {            httpResponse response = post();            header s = response.getFirstheader("Location");            Log.d("PostJsonTask",s.getValue());        } catch (Exception e) {            e.printstacktrace();        }        return null;    }    private httpResponse post() throws Exception {        // convert parameters into JsON object        Map<String,String> params = new HashMap<String,String>();        params.put("user","Robby");        params.put("pass","zqdqzdqdqzd");        JsONObject holder = new JsONObject(params);        httpClIEnt clIEnt = new DefaulthttpClIEnt();        httpPost post = new httpPost(url);        StringEntity se = new StringEntity(holder.toString());        se.setContentType(new Basicheader(http.CONTENT_TYPE,"application/Json"));        post.setheader("Accept","application/Json");        post.setheader("Content-type","application/Json");        post.setEntity(se);        return clIEnt.execute(post);    }}

使用此代码,我可以成功获取Location参数.

但我想用Volley库做这个,我已经有了以下代码:

private static final String url = "http://Jsonblob.com/API/JsonBlob";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    RequestQueue queue = Volley.newRequestQueue(this);    StringRequest request = new StringRequest(Request.Method.POST,url,createResponseListener(),createErrorListener()) {        @OverrIDe        public Map<String,String> getheaders() throws AuthFailureError {            Map<String,String> headers = new HashMap<String,String>();            headers.put("Accept","application/Json");            headers.put("Content-type","application/Json");            return headers;        }        @OverrIDe        protected Map<String,String> getParams() throws AuthFailureError {            Map<String,String>();            params.put("user","Robby");            params.put("pass","zqdqzdqdqzd");            return params;        }        @OverrIDe        protected Response<String> parseNetworkResponse(                NetworkResponse response) {            Map<String,String> headers = response.headers;            String location = headers.get("Location");            Log.d("PostJsonTask",location);            return super.parseNetworkResponse(response);        }    };    queue.add(request);}private ErrorListener createErrorListener() {    return new ErrorListener() {        @OverrIDe        public voID onErrorResponse(VolleyError error) {            error.printstacktrace();        }    };}private Listener<String> createResponseListener() {    return new Listener<String>() {        @OverrIDe        public voID onResponse(String response) {            Log.d("PostJsonTask",response);        }    };}

但这会返回代码为400的VolleyError.我该如何解决这个问题?

解决方法 尝试设置bodyContentType并在postman(web)中设置内容类型的主体,而不是尝试设置内容类型的标题

JsonObjectRequest JsonObjReq = new JsonObjectRequest(Method.POST,obj,new Response.Listener<JsONObject>() {            @OverrIDe            public voID onResponse(JsONObject response) {                Log.d("Response",response.toString());            }        },new Response.ErrorListener() {                @OverrIDe                public voID onErrorResponse(VolleyError error) {                    Log.d("Error",error.toString());                }        })    @OverrIDe    public String getbodyContentType() {        return "application/Json";    }};
总结

以上是内存溢出为你收集整理的android – Volley POST请求,400错误全部内容,希望文章能够帮你解决android – Volley POST请求,400错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1127623.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存