【发布时间】:2015-05-13 05:43:32
【问题描述】:
以下是我的 Volley POST 方法调用。 POST 参数不会将数据传递到 Web 服务器/API 尝试了几乎所有操作,例如 1. 覆盖 byte[] getBody() 2.参数类型 3.使用JsonRequest
将四个 POST 参数解析到服务器并在此基础上得到响应。 这段代码缺少什么??
private void generateTicket(final String field1, final String field2 , final String field3, final String field4) {
StringRequest strReq = new StringRequest(Method.POST,
AppConfig.URL_GENERATION, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
// Check for error node in json
if (!error) {
// SUCCESS CODE GOES HEAR
} else {
// Error in login. Get the error message
String errorMsg = jObj.getString("msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "API Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
// Posting parameters to the url
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "generate");
params.put("field1", field1);
params.put("field2", field2);
params.put("field3", field3);
params.put("field4", field4);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type","application/x-www-form-urlencoded");
// params.put("Content-Type", "application/json");
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
【问题讨论】:
-
调试并尝试查找...将断点放在响应和错误回调方法上...同时发布您的URL和请求表单...
-
如何将请求添加到 volley 中?发布您的 Appcontroller 代码。