java - 如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?

查看:129
本文介绍了java - 如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?

比如

private String A(){

 StringRequest stringRequest=new StringRequest(Request.Method.POST, MyApplication.HOST + "/mobileLogin.do",
             new Response.Listener<String>() {
                        @Override
              public void onResponse(String s) {
sout("获取的"+s)
                           }
               }, new Response.ErrorListener() {
                   @Override
                   public void onErrorResponse(VolleyError volleyError) {

                   }
               }){
                   @Override
                   protected Map<String, String> getParams() throws AuthFailureError {
                       Map<String,String> map=new HashMap<>();
                       map.put("msgno","001010");
                       map.put("uid",s);
                       return super.getParams();
                   }
               };
               requestQueue.add(stringRequest);
   } 
   
   


我想返回这个获取的结果,但是volley的操作是在异步,根本没法return,那这个怎么办

解决方案

可以使用接口回调

  1. 先声明一个接口

public interface RequestCallback{
    void onSuccess(String data);
    void onFail(String error);
}

  1. 然后在方法内使用

private String A(RequestCallback callback){

 StringRequest stringRequest=new StringRequest(Request.Method.POST, MyApplication.HOST + "/mobileLogin.do",
             new Response.Listener<String>() {
                        @Override
              public void onResponse(String s) {
                    sout("获取的"+s)
                    if(callback!=null){
                      callback.onSuccess(s);
                    }
                    
                           }
               }, new Response.ErrorListener() {
                   @Override
                   public void onErrorResponse(VolleyError volleyError) {
                        if(callback!=null){
                            callback.onFail(volleyError.getMessage);
                        }
                        
                   }
               }){
                   @Override
                   protected Map<String, String> getParams() throws AuthFailureError {
                       Map<String,String> map=new HashMap<>();
                       map.put("msgno","001010");
                       map.put("uid",s);
                       return super.getParams();
                   }
               };
               requestQueue.add(stringRequest);
   } 

这篇关于java - 如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆