Http Get Request не получает никаких данных - PullRequest
0 голосов
/ 24 марта 2019

У меня есть мой Web Api на производственном сервере, работающий в сети и хорошо работающий в почтальоне и в формах Xamarin, пока мне не нужно было сделать запрос на получение и не возвращал никаких данных.Infact он останавливается на линии GetAsStringAsync и не продолжается.Вместо этого он выпрыгивает из метода, а затем больше ничего.

Кто-нибудь знает, в чем может быть проблема?Я проверил и убедился, что мой интернет работает и Uri тоже.

Здесь я делаю формы Get in Xamarin:

public async Task<List<OfferModel>> AllOffers()
{
    var httpclient = new HttpClient();
    httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Settings.AccessToken);
    //it does not continue after this line, it jumps out of the method instead
    var response = await httpclient.GetStringAsync(UrlConstants.offerurl);
    var data =JsonConvert.DeserializeObject<List<OfferModel(response);
    return data;
}

1 Ответ

1 голос
/ 25 марта 2019

Решение 1

Можете ли вы попробовать задачу доступа через ожидающего, возможно, вы дождетесь результата при ответе

    public class HttpHelperService
    {
                public async Task<List<OfferModel>> AllOffers()
                {
                    List<OfferModel> result;
                    string responseBody;
                    using (HttpClient client = new HttpClient())
                    {
                        try
                        {
                            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Settings.AccessToken);
                            HttpResponseMessage response = client.GetStringAsync(new Uri(UrlConstants.offerurl)).GetAwaiter().GetResult();
                            result = JsonConvert.DeserializeObject<List<OfferModel>>(response);
                        }
                        catch (Exception ex)
                        {
                            result = null;
                        }
                        return result;
                    }
                }
        }

Решение 2

public class MyPage : ContentPage
{
//Here is your page constructor
    public MyPage()
    {
       GetServices(); //--> call here without awaiter
    }
}

//Here is your awaiter method
    private async void GetServices()
    {
       LoadingPopupService.Show();
       var result = await HttpService.AllOffers();
        LoadingPopupService.Hide();
    }

//Here is your service.
    public async Task<List<OfferModel>> AllOffers()
    {
        var httpclient = new HttpClient();
        httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Settings.AccessToken);
        var response = await httpclient.GetStringAsync(UrlConstants.offerurl);
        var data =JsonConvert.DeserializeObject<List<OfferModel(response);
        return data;
    }  
...