android volley post 参数,android – 使用Volley POST传递参数

我能够使用Postman和这些参数调用HTTP端点:{"name":"Val","subject":"Test"}但是我无法通过Android对Volley做同

我能够使用Postman和这些参数调用HTTP端点:

{

"name":"Val",

"subject":"Test"

}

但是我无法通过Android对Volley做同样的事情:这里尝试使用JSONRequest:

HashMap params2 = new HashMap();

params.put("name", "Val");

params.put("subject", "Test Subject");

JsonObjectRequest jsObjRequest = new JsonObjectRequest

(Request.Method.POST, Constants.CLOUD_URL, new JSONObject(params2), new Response.Listener() {

@Override

public void onResponse(JSONObject response) {

mView.showMessage("Response: " + response.toString());

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

// TODO Auto-generated method stub

mView.showMessage(error.getMessage());

}

});

// Access the RequestQueue through your singleton class.

VolleySingleton.getInstance(mContext).addToRequestQueue(jsObjRequest);

这里是尝试StringRequest

private void postMessage(Context context, final String name, final String subject ){

RequestQueue queue = Volley.newRequestQueue(context);

StringRequest sr = new StringRequest(Request.Method.POST, Constants.CLOUD_URL, new Response.Listener() {

@Override

public void onResponse(String response) {

mView.showMessage(response);

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

}

}){

@Override

protected Map getParams(){

Map params = new HashMap();

params.put("name", name);

params.put("subject", subject);

return params;

}

@Override

public Map getHeaders() throws AuthFailureError {

Map params = new HashMap();

params.put("Content-Type","application/x-www-form-urlencoded");

return params;

}

};

queue.add(sr);

}

当我使用JSONRequest时,调用POST但没有传递参数,当我使用StringRequest时,我得到下面的错误?如何将JSON数据传递给Volley调用?

E/Volley: [13053] BasicNetwork.performRequest: Unexpected response code 400 for

这是处理请求的服务器代码

public static async Task Run(HttpRequestMessage req, TraceWriter log)

{

var helloRequest = await req.Content.ReadAsAsync();

var name = helloRequest?.Name ?? "world";

var responseMessage = $"Hello {personToGreet}!";

log.Info($"Message: {responseMessage}");

return req.CreateResponse(HttpStatusCode.OK, $"All went well.");

}

public class HelloRequest

{

public string Name { get; set; }

public string Subject { get; set; }

}