如何使用volley在Android中发送带有JSON字符串的发布请求?

时间:2017-07-13 15:37:01

标签: android json post gson android-volley

我是发送邮件请求的新手。我想以json字符串的形式发送一个对象,我该如何实际发送json本身?到目前为止我有这个:

try {
    Gson gson = new Gson();
    objInString = gson.toJson(obj);
} catch (Exception e) {
    e.printStackTrace();
}

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

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
            }
}, new Response.ErrorListener(){
    @Override
    public void onErrorResponse(VolleyError error){
        VolleyLog.d(TAG, "Error: " + error.getMessage());
    }
})

2 个答案:

答案 0 :(得分:1)

试试这个

RequestQueue queue = Volley.newRequestQueue(getApplicationContext());   

JsonObjectRequest jsonObjReq = new  JsonObjectRequest(int method, String url, jsonRequest,
    Listener<JSONObject> listener, ErrorListener errorListener) {
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
            errorListener);
}

queue.add(jsObjRequest);

如果您的字符串格式的数据与json兼容,那么将其转换为JsonObject,如下所示

try {
        JSONObject jsonRequest=new JSONObject(jsonString);
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

如果您只想发送字符串,请将其作为参数添加到POST请求中。

Map<String, String> params = new HashMap<>();
params.put("json", someJsonString);

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

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
            }
}, new Response.ErrorListener(){
    @Override
    public void onErrorResponse(VolleyError error){
        VolleyLog.d(TAG, "Error: " + error.getMessage());
    }
});

然后您可以通过参数名称&#34; json&#34;来检索服务器中的字符串。