Android json 对象的 Volley Post 方法

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25906689/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 09:49:07  来源:igfitidea点击:

Volley Post method for json object

androidpostandroid-volleyjsonobject

提问by pincy

data={
    "request": {
       "type": "event_and_offer",
       "devicetype": "A"
    },
    "requestinfo": {
       "value": "offer"
      }
}

how to post this request from volley plz help

如何从 volley plz help 发布此请求

            JsonObjectRequest jsonObjReq = new JsonObjectRequest(
            Request.Method.POST,url, null   ,
            new Response.Listener<JSONObject>() {




                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());

                    msgResponse.setText(response.toString());
                    hideProgressDialog();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hideProgressDialog();
                }
            }) {

        /**
         * Passing some request headers
         * */
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/x-www-form-urlencoded");
            return headers;
        }

js is reffer to my jsson object ...... i make my jsson like this.....

js 是对我的 jsson 对象的引用......我让我的 jsson 像这样......

JSONObject jsonobject_one = new JSONObject();
    try {
        jsonobject_one.put("type", "event_and_offer");
        jsonobject_one.put("devicetype", "I");

        JSONObject jsonobject_TWO = new JSONObject();
        jsonobject_TWO.put("value", "event");
        jsonobject = new JSONObject();

        jsonobject.put("requestinfo", jsonobject_TWO);
        jsonobject.put("request", jsonobject_one);

        js = new JSONObject();
        js.put("data", jsonobject.toString());
        Log.e("created jsson", "" + js);

But it Not response the value what to do plzz help

但它不响应值怎么办请帮忙

回答by mmlooloo

first your json data:

首先你的json数据:

JSONObject js = new JSONObject();
try {
    JSONObject jsonobject_one = new JSONObject();

    jsonobject_one.put("type", "event_and_offer");
    jsonobject_one.put("devicetype", "I");

    JSONObject jsonobject_TWO = new JSONObject();
    jsonobject_TWO.put("value", "event");
    JSONObject jsonobject = new JSONObject();

    jsonobject.put("requestinfo", jsonobject_TWO);
    jsonobject.put("request", jsonobject_one);


    js.put("data", jsonobject.toString());

}catch (JSONException e) {
        e.printStackTrace();
}

then your json request:

然后你的json请求:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(
        Request.Method.POST,url, js,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());

                msgResponse.setText(response.toString());
                hideProgressDialog();
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {

    /**
     * Passing some request headers
     * */
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
         HashMap<String, String> headers = new HashMap<String, String>();
         headers.put("Content-Type", "application/json; charset=utf-8");
        return headers;
    }

Notice the header

注意标题

and if you want to test in localhost use below code and set your url to connect your localhost server and ip address: below code put all of your request in a text file, i tried it and it works

如果您想在 localhost 中进行测试,请使用以下代码并设置您的 url 以连接您的 localhost 服务器和 ip 地址:下面的代码将您的所有请求放在一个文本文件中,我尝试了它并且可以正常工作

<?php
file_put_contents('test.txt', file_get_contents('php://input'));
?>