Использование веб-API в Xamarin - PullRequest
0 голосов
/ 05 июля 2018

Я создал веб-API в ASP.NET, который размещен на веб-сервере. Этот веб-API обращается к таблице в SQL Server, где у меня есть таблица с именем Products с Id, ProductName, Description and Price, я провел тесты через Postman, и он работает правильно, но когда я пытаюсь использовать метод для доставки конкретного продукта через Xamarin приложение, я получаю следующее сообщение об ошибке в режиме перерыва:

System.Net.Http.HttpRequestException: превышено время ожидания для получения сведений об исключении

public class DataService
{

    public async Task<List<Product>> GetProductAsync(string ProductName)
    {

        using (var client = new HttpClient())
        {

            string url = "http://ProductsAPI.hostname.com/api";

            try
            {

               var uri = url + "/" + ProductName.ToString();
               HttpResponseMessage response = await client.GetAsync(uri);
               var ProductJsonString = awaitresponse.Content.ReadAsStringAsync();
               var Product = JsonConvert.DeserializeObject<List<Product>>(ProductJsonString);

               return Product;

            }

            catch (Exception ex)

            {
                throw ex;
            }

        }

    }

}

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Если вы увеличите тайм-аут HttpClient, он вернет больше информации?

Также попробуйте Переустановка Он сделает всю работу за вас, включая десериализацию в json.

0 голосов
/ 06 июля 2018

Это прекрасно работает для меня

  public static async Task<List<BranchMasterModel>> GetBranchList(int city)
    {
        var client = new HttpClient(new NativeMessageHandler());

        client.BaseAddress = new Uri(UrlAdd);//("http://192.168.101.119:8475/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "AuthToken"));
        var result = await client.GetAsync("api/Master/V2/Branch/"+city);
        string branch = await result.Content.ReadAsStringAsync();
        var branches = JsonConvert.DeserializeObject<List<BranchMasterModel>>(branch);
        return branches;
    }
0 голосов
/ 05 июля 2018

Вот что я использовал в прошлом:

public string GetAPIJsonAsync(string URL)
    {
        using (WebClient wc = new WebClient())
        {
            return wc.DownloadString(URL);
        }
    }

Это вернуло бы необработанный JSON тому, кто его вызвал, и я бы затем преобразовал его в желаемый объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...