使用android Volley以json格式将数据发送到服务器

时间:2016-09-20 04:54:44

标签: android json android-volley

我想将数据从Android应用程序以JSON格式发送到远程服务器。 以下是我的json格式: -

{
  "contacts": [
    {
      "name": "ritva",
      "phone_no": "12345657890",
      "user_id": "1"
    },
    {
      "name": "jisa",
      "phone_no": "12345657890",
      "user_id": "1"
    },
    {
      "name": "tithi",
      "phone_no": "12345657890",
      "user_id": "1"
    }
  ]
}

任何人都可以告诉我如何使用Volley发送此数据吗?

3 个答案:

答案 0 :(得分:2)

  1. 按照POST/GET这样的方法制作像波纹管一样的截击请求, urlresponse & error听众。并且用于发送json覆盖 传递要发送的json的getBody()方法。
  2. 制作RequestQueue&将请求添加到它。你可以开始吧 致电start()
  3. 试试这个:

    // Instantiate the RequestQueue.
        RequestQueue queue = Volley.newRequestQueue(this);
        String url ="http://www.google.com";
    
        // Request a string response from the provided URL.
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        // your response
    
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // error
            }
        }){
            @Override
            public byte[] getBody() throws AuthFailureError {
                String your_string_json = ; // put your json
                return your_string_json.getBytes();
            }
        };
        // Add the request to the RequestQueue.
        queue.add(stringRequest);
        requestQueue.start();
    

    有关详细信息,请参阅 this

答案 1 :(得分:0)

要发送JSON类型数据,您应该使用volley

发出JSON请求
  // Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";

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

                @Override
                public void onResponse(JSONObject response) {


                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub




                }
            });
// Add the request to the RequestQueue.
queue.add(stringRequest);
requestQueue.start();

其中obj是您要发送的JSON对象。如果您想要更多说明,请提出。

如果这有帮助,请将其标记。

答案 2 :(得分:0)

<强> 1。将Volley和Gson Dependency添加到build.gradle:

'com.mcxiaoke.volley:library:1.0.19' 
'com.google.code.gson:gson:2.7'

注意:如果您在String变量中有JSON数据,那么只需将String变量作为第三个参数传递给JsonObjectRequest。(转到步骤6)

如果您的类中有JSON数据,那么只需在JsonObjectRequest的第三个参数的gson.toJson()中传递该类。(转到步骤6)

如果要在类中获取数据,则需要创建与JSON数据相同的类结构。 (转到第2步)

<强> 2。然后使用http://www.jsonschema2pojo.org/

为上述JSON结构创建POJO类

图片中显示的示例: Red marks showing the changes needed to make on site

然后您将获得两个类作为ContactsTop和Contact。 注意:ContactsTop是从jsonschema2pojo.com创建POJO类时提供的名称

第3。将上面生成的类添加到项目中

<强> 4。创建Volley RequestQueue对象和gson对象。

RequestQueue requestQueue = Volley.newRequestQueue(this);
Gson gson = new Gson();

<强> 5。然后将以上JSON数据添加到POJO类。

ContactsTop contactsTop=new ContactsTop();
List<Contact> contactList =new ArrayList();
Contact contact=new Contact();

contact.setPhoneNo("12345657890");
contact.setName("ritva");
contact.setUserId("1");

contactList.add(contact);
contactsTop.setContacts(contactList);

<强> 6。创建JSONObject以使用您的数据调用Web服务。

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "www.your-web-service-url.com/sendContact.php", gson.toJson(contactsTop), new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
             Log.v("Volley:Response ", ""+response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.v("Volley:ERROR ", error.getMessage().toString());
        }
    });

<强> 7。将jsonObjectRequest添加到requestQueue中。 (不要忘记添加此行。这将在RequestQueue中添加您的请求,然后只有您将从您的服务获得JSON响应或错误)。不要忘记在AndroidManifest.xml中添加INTERNET权限

 requestQueue.add(jsonObjectRequest);

然后您将在Android日志监视器中从远程服务获得响应或错误。