我是发送邮件请求的新手。我想以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());
}
})
答案 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;来检索服务器中的字符串。