Android volley库不接受来自getParam()的url中的参数

Android volley库不接受来自getParam()的url中的参数,android,string,web-services,request,android-volley,Android,String,Web Services,Request,Android Volley,Android volley库不接受来自getParam()方法的参数。如果在查询字符串中给出了参数,则该函数有效。我尝试了GET和POST,但均无效。但是我想给出参数POST方法。请检查我在下面发布的代码 RequestQueue queue=Volley.newRequestQueue(getApplicationContext()); 字符串url=AppConstants.WEBSERVICE\u url +AppConstants.WEBSERVICE\u URL\u POST\u评

Android volley库不接受来自getParam()方法的参数。如果在查询字符串中给出了参数,则该函数有效。我尝试了GET和POST,但均无效。但是我想给出参数POST方法。请检查我在下面发布的代码

RequestQueue queue=Volley.newRequestQueue(getApplicationContext());
字符串url=AppConstants.WEBSERVICE\u url
+AppConstants.WEBSERVICE\u URL\u POST\u评论;
StringRequest getRequest=新的StringRequest(Request.Method.GET,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//回应
Log.d(“回复/事后通知”,回复);
意向意向=新意向(getApplicationContext(),
复习活动(课堂);
意向。putExtra(“服务ID”,servicePosition);
星触觉(意向);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//错误
Log.d(“Error.Response”,Error.toString());
}
}) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map pars=新的HashMap();
pars.put(“内容类型”、“应用程序/x-www-form-urlencoded”);
返回PAR;
}
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数put(“rating”,ratingBar.getRating()+);
params.put(“com_content”,comments.getText()+”;
参数put(“用户id”,AppConstants.APP\u登录用户id);
参数put(“comm_post_ID”,AppConstants.arrListServiceDetail
.get(servicePosition.getId()+);
返回参数;
}
};
getRequest.setRetryPolicy(新的DefaultRetryPolicy(500000,
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

添加(getRequest)
getParam()方法无法在截取时处理GET请求。POST方法可以正常工作。您必须使用参数设置完整的URL。

我遇到了与您现在面临的问题相同的问题,但提出了通过将核心类请求作为此请求的超类来生成自定义请求的解决方案。在本例中,我在构造函数中传递参数,然后将其返回给getParams()重写方法,如下所示:

public class RequestJson extends Request<JSONObject> {

private Listener<JSONObject> listener;
private Map<String, String> params;

public RequestJson(String url, Map<String, String> params,
        Listener<JSONObject> reponseListener, ErrorListener errorListener) {
    super(Method.GET, url, errorListener);
    this.listener = reponseListener;
    this.params = params;
}

public RequestJson(int method, String url, Map<String, String> params,
        Listener<JSONObject> reponseListener, ErrorListener errorListener) {
    super(method, url, errorListener);
    this.listener = reponseListener;
    this.params = params;
}

protected Map<String, String> getParams()
        throws com.android.volley.AuthFailureError {
    return params;
};

@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
    AppController.getInstance().checkSessionCookie(response.headers);
    try {
        String jsonString = new String(response.data,
                HttpHeaderParser.parseCharset(response.headers));
        return Response.success(new JSONObject(jsonString),
                HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));
    } catch (JSONException je) {
        return Response.error(new ParseError(je));
    }
}

@Override
protected void deliverResponse(JSONObject response) {
    // TODO Auto-generated method stub
    listener.onResponse(response);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    Map<String, String> headers = super.getHeaders();

    if (headers == null
            || headers.equals(Collections.emptyMap())) {
        headers = new HashMap<String, String>();
    }

    AppController.getInstance().addSessionCookie(headers);

    return headers;
}
}
公共类请求JSON扩展请求{
私人倾听者;
私有映射参数;
public RequestJson(字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(Method.GET、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
public RequestJson(int方法、字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(方法、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
};
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
AppController.getInstance().checkSessionCookie(response.headers);
试一试{
String jsonString=新字符串(response.data,
HttpHeaderParser.parseCharset(response.headers));
返回Response.success(新的JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(响应));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}捕获(JSONException je){
返回Response.error(newparseerror(je));
}
}
@凌驾
受保护的void deliverResponse(JSONObject响应){
//TODO自动生成的方法存根
onResponse(response);
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=super.getHeaders();
if(headers==null
||headers.equals(Collections.emptyMap()){
headers=newhashmap();
}
AppController.getInstance().addSessionCookie(标题);
返回标题;
}
}

希望这能解决您的问题。

我在post中也使用了相同的代码..但它不起作用:(正如您在我第二次尝试时所说的那样..我不知道原因,但上面的代码通过更改GET to post起作用..谢谢“volley library不接受getParam()的参数”是指getParams()吗方法未被调用,或者返回的参数未包含在post正文中,甚至getParams()中方法调用?我的问题已解决,但感谢您的建议。我使用了字符串请求。它是否适用于字符串请求?是的,它也适用于同样的字符串请求。您可以按照上面的示例重写相同的字符串请求,并让我知道它是否解决了您的问题。好的,如果需要,我将尝试此..并让您知道它是否有效。如果你试试,然后也让我知道它是否有效。。。