【问题标题】:how to post parameters as a json in android while calling any api如何在调用任何api时在android中将参数作为json发布
【发布时间】:2017-06-02 18:09:12
【问题描述】:

我是 Android 开发新手,我需要在调用任何 API 方法时将参数作为 JSON 发布。

我作为数组列表传递:

List<NameValuePair> params = new ArrayList<NameValuePair>();

请提出任何建议。 谢谢

【问题讨论】:

  • 你是怎么调用api的?你能告诉我们吗?
  • 作为我正在传递的列表

标签: android json http-headers postdata


【解决方案1】:

我写了一个在Android中解析生成JSON的库http://github.com/amirdew/JSON

例如:

 JSON generatedJsonObject = JSON.create(
                JSON.dic(
                        "someKey", "someValue",
                        "someArrayKey", JSON.array(
                                "first",
                                1,
                                2,
                                JSON.dic(
                                        "emptyArrayKey", JSON.array()
                                )
                        )
                )
        );


  String jsonString = generatedJsonObject.toString();

结果:

{
  "someKey": "someValue",
  "someArrayKey": [
    "first",
    1,
    2,
    {
      "emptyArrayKey": []
    }
  ]
}

【讨论】:

    【解决方案2】:

    我终于找到了使用 volley 库的解决方案,现在工作正常

      private void callApiWithJsonReqPost() {
            boolean failure = false;
            uAddress="133 Phùng Hưng, Cửa Đông, Hoàn Kiếm, Hà Nội, Vietnam";
           addressTag="work address";
            String callingURl="put your url here"
    
        JSONObject jsonObject=null;
    
        try {
             jsonObject=new JSONObject();
            jsonObject.put("address", uAddress);
            jsonObject.put("type", "insert");
            jsonObject.put("tag", addressTag);
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
                callingURl, jsonObject,
                new Response.Listener<JSONObject>() {
    
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("new_address" ,"sons=="+response.toString());
    
                    }
                }, new Response.ErrorListener() {
    
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("error", "Error: " + error.getMessage());
    
            }
        }) {
    
            /**
             * 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;
            }
    
    
        };
    
        // Adding request to request queue
        Singleton_volley.getInstance().addToRequestQueue(jsonObjReq,"1");
    
    
    }
    

    【讨论】:

      【解决方案3】:
      params.add(new BasicNameValuePair("key",data)); 
      
      
      JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                      "POST", params);
      

      【讨论】:

      • 是的,这是可行的,但我需要发送 json 对象而不是 List params = new ArrayList();
      • 您要发送 JSON 吗?有必要使用 NameValuePair 吗?你可以使用它:stackoverflow.com/questions/13005101/…
      • 好的thanx,我已经通过凌空库做到了。
      猜你喜欢
      • 2016-11-03
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多