无法从凌空得到回应

时间:2019-04-24 14:15:27

标签: java android android-volley

我想从我的请求中得到答复,但不能。在调试器中,代码接收getHeaders()函数,只是不返回参数。

我刚刚写了一堂课,但是没用

请求类:

package com.izavis.fakmusic;

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.util.HashMap;
import java.util.Map;

class Requests {
    private String response_of_server, token;
    private String url = "https://cloud-api.yandex.net/v1/disk";
    private Context context;
    private boolean responce_received = false;

    boolean isResponce_received() {
        return responce_received;
    }

    Requests (String token, Context context) {
        this.token = token;
        this.context = context;
    }

    private void set_response_of_server(String response) {
        this.response_of_server = response;
    }

    String get_response() {
        return response_of_server;
    }

    void get_metadata_of_user() {

        try {
            /*Request*/
            RequestQueue queue = Volley.newRequestQueue(this.context);

            Response.ErrorListener error_listener = new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            };
            Response.Listener<String> response_listener = new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    responce_received = true;
                    set_response_of_server(response);
                }
            };

            StringRequest getRequest = new StringRequest(Request.Method.GET, url+"?fields=user", response_listener, error_listener) {
                @Override
                public Map<String, String> getHeaders() {
                    Map<String, String>  params = new HashMap<>();
                    params.put("Host", "cloud-api.yandex.net");
                    params.put("Authorization", token);
                    return params;
                }
            };
            queue.add(getRequest);
            /*Request end*/

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用该类的代码:

private boolean check_token() {
        String token = load_token();
        String result;
        Requests request = new Requests(token, this);
        request.get_metadata_of_user();
        while(!request.isResponce_received()) {
            SystemClock.sleep(50);
        }
        result = request.get_response();
        Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
        return !(result.equals("-1"));
    }

它一直循环直到无限。我只想在check_token()函数中获得响应。

0 个答案:

没有答案