enter image description here排球发布方法请求不接受我的参数。
我创建了一个单独的Volley类,用于多个Activity
//Volley Webservice class
public class VolleyWebService {
public interface VolleyResponseListener {
void onSuccess(JSONObject response);
void onError(VolleyError error);
}
public void getResponse(String url, Context mContext, final VolleyResponseListener listener) {
try {
String encodedUrl = url.replace(" ", "%20") + "";
if (encodedUrl.contains("("))
encodedUrl = encodedUrl.replace("(", "%28");
if (encodedUrl.contains(")"))
encodedUrl = encodedUrl.replace(")", "%29");
encodedUrl = encodedUrl.replace(" ", "%20");
RequestQueue mQueue = Volley.newRequestQueue(mContext);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, encodedUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
listener.onSuccess(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
listener.onError(error);
}
});
mQueue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
}
public void postResponse (String url, final HashMap<String, String> params, Context mContext, final VolleyResponseListener listener) {
try {
RequestQueue mQueue = Volley.newRequestQueue(mContext);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, new JSONObject((Map) params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
listener.onSuccess(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
listener.onError(error);
}
});
mQueue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Login Method
private void Login(){
pDialog = new ProgressDialog(login.this);
pDialog.setMessage("Logging you in..");
pDialog.setCancelable(false);
pDialog.show();
String mobilestr = mobile.getText().toString();
String passwordstr = password.getText().toString();
HashMap<String, String> params = new HashMap<>();
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("AUTH_USER", "user");
jsonObject.put("AUTH_PWD", "pwd");
jsonObject.put("user_mobile", mobilestr);
jsonObject.put("user_pwd", passwordstr);
} catch (JSONException e) {
e.printStackTrace();
}
new VolleyWebService().postResponse(urlConfigClass.POST_LOGIN, params, this, new VolleyWebService.VolleyResponseListener() {
@Override
public void onSuccess(JSONObject response) {
if (response.toString().contains("status")) {
try {
String status = response.getString("status");
String errormsg = response.getString("errorMsg");
if (status.equals("1")) {
//Collect my data here
} else {
pDialog.dismiss();
Toast.makeText(getApplicationContext(), errormsg, Toast.LENGTH_LONG).show();
}
} catch (Exception ex) {
Toast.makeText(getApplicationContext(), "Something went wrong!", Toast.LENGTH_LONG).show();
pDialog.dismiss();
}
} else {
Toast.makeText(getApplicationContext(), "No Response from Server!", Toast.LENGTH_LONG).show();
pDialog.dismiss();
}
}
@Override
public void onError(VolleyError error) {
}
});
}
我的REST API中收到无效请求,因为发送的参数未被接受。我最近从Asynctas转到了Volley。在我的asyntask方法上效果很好。
答案 0 :(得分:0)
您的网址应在下面,因为您的api需要查询参数
urlConfigClass.POST_LOGIN +"?AUTH_USER=use&AUTH_PWD=pwd&user_mobile="+mobilestr+"user_pwd="+passwordstr
您的参数应该为空
new VolleyWebService().postResponse(urlConfigClass.POST_LOGIN +"?AUTH_USER=use&AUTH_PWD=pwd&user_mobile="+mobilestr+"user_pwd="+passwordstr, null, this, new VolleyWebService.VolleyResponseListener() {
您在VolleyWebService中的方法postResponse()应该是
public void postResponse (String url, final HashMap<String, String> params, Context mContext, final VolleyResponseListener listener) {
try {
RequestQueue mQueue = Volley.newRequestQueue(mContext);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, params!=null?new JSONObject((Map) params):null, new Response.Listener<JSONObject>() {