猿问

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

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


比如


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,那这个怎么办


慕无忌1623718
浏览 666回答 6
6回答

牧羊人nacy

上RxJava或者EventBus

慕妹3242003

那就在异步回调函数里做。或者在异步返回的地方传入方法或者传入函数。

慕运维8079593

你可以换种思路,不需要再volley中返回结果。当请求成功后对结果进行封装,例如直接使用List或者结合类进行存储,然后可以通过Handler机制从中获取数据与操作。

慕后森

我是使用融云的时候需要用户信息提供者,根据他的方法传过来的stringId,我再使用这个id从我的服务器获取这个id对应的信息,,,所以没办法先操作volley,RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public UserInfo getUserInfo(final String s) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;volley操作,需要使用到s
随时随地看视频慕课网APP

相关分类

Java
我要回答