java - 如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?
PHP中文网
PHP中文网 2017-04-18 09:40:00
0
6
459

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

比如

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,那这个怎么办
PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(6)
黄舟

インターフェースコールバックを使用できます

  1. 最初にインターフェースを宣言します

リーリー
  1. の場合、メソッド内で

を使用します リーリー
いいねを押す +0
PHPzhong

RxJava または EventBus を使用します

いいねを押す +0
刘奇

次に、非同期コールバック関数でそれを実行します。または、非同期リターンが発生するメソッドまたは関数を渡します。

いいねを押す +0
巴扎黑

気が変わっても構いません。volley で結果を返す必要はありません。リクエストが成功すると、結果は、たとえば List を直接使用するか、クラスと組み合わせて保存することによりカプセル化され、Handler メカニズムを通じてそこからデータと操作を取得できます。

いいねを押す +0
左手右手慢动作

Rongyun を使用する場合、彼のメソッドで渡された stringId に従って、この ID を使用してサーバーからこの ID に対応する情報を取得する必要があるため、操作する方法がありません。まずはボレー

RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {

リーリー
いいねを押す +0
洪涛

Handler を直接使用できます
質問を読み直しましたが、ここでは RxAndroid の方が適していると思います。 リーリー

まだ始めたばかりですが、書いたコードはあまりきれいではありません。 。 。専門家の指導を求めています

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート