如何在android中使用截击库发布参数?

如何在android中使用截击库发布参数?,android,Android,我们如何使用Volley库发布参数?我已经尝试了很多,但是我没有找到解决办法。因此,如果有人知道如何使用volley发布参数,请帮助我。您可以创建自定义请求单例,扩展importcom.android.volley.request,如下所示(在本例中是JSON,但可以使用字符串): public类CustomRequest扩展请求{ 私人回应。倾听者; 私有映射参数; 公共CustomRequest(字符串url、映射参数、, Response.Listener reponlistener,Re

我们如何使用Volley库发布参数?我已经尝试了很多,但是我没有找到解决办法。因此,如果有人知道如何使用volley发布参数,请帮助我。

您可以创建自定义请求单例,扩展import
com.android.volley.request
,如下所示(在本例中是JSON,但可以使用字符串):

public类CustomRequest扩展请求{
私人回应。倾听者;
私有映射参数;
公共CustomRequest(字符串url、映射参数、,
Response.Listener reponlistener,Response.ErrorListener ErrorListener){
super(Method.GET、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
公共CustomRequest(int方法、字符串url、映射参数、,
Response.Listener reponlistener,Response.ErrorListener ErrorListener){
super(方法、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
};
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
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);
}
}
然后像这样使用它:

Map<String, String> params = new HashMap<String, String>();
                params.put("param1",string1);
                params.put("param2", "string2");
                RequestQueue requestQueue = Volley.newRequestQueue(context);
                CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, BuildConfig.API_HOSTNAME_JSON_POST,
                        params,  reponseListener, errorListener);
requestQueue.add(jsObjRequest);
 RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue();
    MyRequest jsObjRequest = new MyRequest(Request.Method.POST, LOGIN_URL, params, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            Log.d("RESPONSE", response.toString());

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d("RESPONSE ERROR", "Error: " + error.getMessage());

        }
    });

    requestQueue.add(jsObjRequest);
Map params=newhashmap();
参数put(“参数1”,字符串1);
参数put(“参数2”、“字符串2”);
RequestQueue RequestQueue=Volley.newRequestQueue(上下文);
CustomRequest jsObjRequest=new CustomRequest(Request.Method.POST、BuildConfig.API\u HOSTNAME\u JSON\u POST、,
参数、reponListener、errorListener);
add(jsObjRequest);

首先,您必须创建一个自定义类来扩展Volley的请求类……在这个类中,您应该声明一个构造函数,该构造函数包含用于发出请求的方法(在您的案例中为POST)、url端点、要发布的特定参数以及Volley回调侦听器。您还必须创建一个方法来获取post参数,该参数将从您的fragment活动中设置和发送

   public class MyRequest extends Request<JSONObject> {
          private Listener<JSONObject> listener;
          private Map<String, String> reponseListener;

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

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

         @Override
       protected Response<JSONObject>  parseNetworkResponse(NetworkResponse response) {
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
    responselistener.onResponse(response);
   }
  }

   }
公共类MyRequest扩展请求{
私人倾听者;
私有地图转发者;
公共MYRequest(int方法、字符串url、映射参数、侦听器reponListener、ErrorListener ErrorListener){
super(方法、url、errorListener);
this.reponListener=reponListener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
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(应答);
}
}
}
您可以从acctivity调用此类,如下所示:

Map<String, String> params = new HashMap<String, String>();
                params.put("param1",string1);
                params.put("param2", "string2");
                RequestQueue requestQueue = Volley.newRequestQueue(context);
                CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, BuildConfig.API_HOSTNAME_JSON_POST,
                        params,  reponseListener, errorListener);
requestQueue.add(jsObjRequest);
 RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue();
    MyRequest jsObjRequest = new MyRequest(Request.Method.POST, LOGIN_URL, params, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            Log.d("RESPONSE", response.toString());

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d("RESPONSE ERROR", "Error: " + error.getMessage());

        }
    });

    requestQueue.add(jsObjRequest);
RequestQueue RequestQueue=VolleySingleton.getInstance().getRequestQueue();
MyRequest jsObjRequest=newmyrequest(Request.Method.POST,LOGIN_URL,params,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
Log.d(“RESPONSE”,RESPONSE.toString());
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(“响应错误”,“错误:+ERROR.getMessage());
}
});
add(jsObjRequest);
其中,params散列为:

    Map<String, String> params = new HashMap<String, String>();
       params.put("email", "yourEmail");
       params.put("password", "yourPassword");
Map params=newhashmap();
参数put(“电子邮件”、“您的电子邮件”);
参数put(“密码”、“您的密码”);

您想发布哪种类型的参数?我想在android中使用post方法发布电子邮件amd密码……如果您不想使用单例模式来实例化RequestQueue,只需执行以下操作:RequestQueue queue=Volley.newRequestQueue(此);感谢代码现在运行良好…如果您愿意,您可以接受我的答案…您能告诉我为什么在这种情况下显示空值。我不知道值是post的API是否实际工作?这是我使用的API。。。你测试过我发布的上述代码吗?谢谢,我现在可以发布了。。谢谢