Как я могу сделать несколько веб-запросов для Spotify API - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь сделать несколько веб-запросов к API Spotify в моем проекте.У меня есть строковый массив с именем strResponseVal и foreach ответ URL, я хочу сохранить JSON, который возвращается в этот массив.

Я могу сделать один запрос.Я делаю это путем создания экземпляра клиента с конечной точкой "url" и создания веб-запроса к этому URL.

Как я могу сделать несколько?

Сначала у меня было:

        RestClient rClient = new RestClient();
        rClient.endPoint = "https://api.spotify.com/v1/me";
        strResponse = string.Empty;
        strResponse= rClient.getRequest(token);

        //Console.WriteLine("\n\n------------------------------------Next API Call------------------------------------");
        RestClient pClient = new RestClient();
        pClient.endPoint = "https://api.spotify.com/v1/me/playlists";
        strResponse = string.Empty;
        strResponse = pClient.getRequest(token);

Ниже приведен класс RestClient:

public enum HttpVerb
{
    GET,
    POST,
    PUT,
    DELETE
}

class RestClient
{
    public string endPoint { get; set; }
    public HttpVerb httpMethod { get; set; }
    List<Uri> uris;

    public RestClient()
    {
        endPoint = string.Empty;
        httpMethod = HttpVerb.GET;
    }

    public string[] getRequest(Token accessToken)
    {
        string[] strResponseVal = new string[uris.Count];
        //HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);

        try
        {
            uris = new List<Uri>();
            uris.Add(new Uri("https://api.spotify.com/v1/me"));
            uris.Add(new Uri("https://api.spotify.com/v1/me/playlists"));


            Parallel.ForEach(uris, u =>
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(u);
                request.ContentType = "application/json";
                request.Headers.Add("Authorization", $"Bearer {accessToken.AccessToken}");
                request.Method = httpMethod.ToString();
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        throw new ApplicationException("error code: " + response.StatusCode);
                    }
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                        {
                            using (StreamReader reader = new StreamReader(responseStream))
                            {
                                for (int i = 0; i < uris.Count; i++)
                                {
                                    strResponseVal[i] = reader.ReadToEnd();

                                }
                            }
                        }
                    }
                }
            });
        }
        catch
        {

        }
        /*request.ContentType = "application/json";
        request.Headers.Add("Authorization", $"Bearer {accessToken.AccessToken}");
        request.Method = httpMethod.ToString();
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new ApplicationException("error code: " + response.StatusCode);
            }
            using (Stream responseStream = response.GetResponseStream())
            {
                if (responseStream != null)
                {
                    using (StreamReader reader = new StreamReader(responseStream))
                    {
                        strResponseVal = reader.ReadToEnd();
                    }
                }
            }
        }*/
        return strResponseVal;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...