Не могу получить ответ от залпа - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу получить ответ на мой запрос, но не могу. В отладочном коде получает функцию 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 ().

...