Get запрос Xamarin C#

Эмулятор айфона получает данные при get запросе, а физическое устройство нет, может кто то подскажет в чём может быть проблема?

public List<Photo> GetPhotoSearch(double northEastLatitude, double northEastLongtitude,
                                          double southWestLatitude, double southWestLongtitude)
        {
            List<Photo> photos = new List<Photo>();

            WebRequest request = WebRequest.Create($"{totalUrl}/northEast='{northEastLatitude}'-'{northEastLongtitude}'" +
                                                   $"_southWest='{southWestLatitude}'-'{southWestLongtitude}'");
            WebResponse response = request.GetResponse();
            using (Stream stream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    string line = "";
                    while ((line = reader.ReadLine()) != null)
                    {
                        photos = JsonConvert.DeserializeObject<List<Photo>>(line);
                    }
                }
            }
  
            response.Close();

            return photos;
        }

Ответы (1 шт):

Автор решения: aepot

Возможно у вас ошибка в URL запроса, так как вы не разделяете параметры с помощью & и не отделяете их от базового URL с помощью ?.

Я дополнительно переписал все это под HttpClient, потому что Microsoft не рекомендует использовать устаревший WebClient.

async void OnButtonClicked(object sender, EventArgs args)
{
    try
    {
        Dictionary<string, string> queryParams = new Dictionary<string, string>()
        {
            { "northEast", $"'{bounds.NorthEast.Latitude}'-'{bounds.NorthEast.Longitude}'" },
            { "southWest", $"'{bounds.SouthWest.Latitude}'-'{bounds.SouthWest.Longitude}'" }
        };
        List<Photo> photos = await service.GetPhotoSearch(queryParams);
        Photos = new ObservableCollection<Photo>(photos);
    }
    catch (Exception ex)
    {
        // Debug.WriteLine(ex.Message);
    }
}
private static readonly HttpClient client = new HttpClient();

public async Task<List<Photo>> GetPhotoSearch(Dictionary<string, string> queryParams)
{
    string query;

    using (HttpContent content = new FormUrlEncodedContent(queryParams))
    {
        query = await content.ReadAsStringAsync();
    }

    using (var response = await client.GetAsync($"{totalUrl}/?{query}", HttpCompletionOption.ResponseHeadersRead))
    {
        response.EnsureSuccessStatusCode(); // бросает исключение, если сервер вернул ошибку
        string json = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<List<Photo>>(json);
    }
}
→ Ссылка