Я использую веб-API mvc5 для питания мобильного приложения в xamrian. По большей части вызовы веб-API работают на 100%, однако сегодня я столкнулся с ситуацией, когда произошел полный останов в коде продукта, вызвавший вызов к веб-API для сбоя.
Но сегодня у меня был такой код продукта, как этот TFNT1116.5, и вызов API не удался.
public async Task<StockWarehouseInfoBins> GetWarehouseBinsInformaiton(string ItemCode, string WarehouseName)
{
List<StockWarehouseInfoBins> _result = new List<StockWarehouseInfoBins>();
var uri = new Uri(string.Format(BaseUrl + Constants.BinDetails + ItemCode.Trim(), string.Empty));
var response = await _client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var byteArray = await response.Content.ReadAsByteArrayAsync();
var content = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);
_result = JsonConvert.DeserializeObject<List<StockWarehouseInfoBins>>(content);
}
return _result.FirstOrDefault();
}
Мой клиент - это единица класса HTTP-клиента.
HttpClient _client;
Я думаю, что проблема заключается в полной остановке в коде продукта.
Это вызов, который он получает в моем контроллере MVC.
[HttpGet]
// GET: Warhouses/Details/5
public ActionResult BinDetails(string id)
{
List<StockWarehouseInfoBins> result = new List<StockWarehouseInfoBins>();
result = database.GetWarehouseDetails(id);
return Json(result, JsonRequestBehavior.AllowGet);
}
И это моя информация о маршруте. Когда я проверяю вызов без кодов продуктов без полных остановок в них, он работает как положено и возвращает правильные данные JSON.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Это мой класс здесь.
public class StockWarehouseInfoBins
{
public StockWarehouseInfoBins();
public long? BinItemID { get; set; }
public string BinName { get; set; }
public long? WarehouseItemID { get; set; }
public long? WarehouseID { get; set; }
public string WarehouseName { get; set; }
public decimal ConfirmedQtyInStock { get; set; }
public decimal QuantityReserved { get; set; }
public decimal QuantityAllocatedBOM { get; set; }
public decimal QuantityAllocatedSOP { get; set; }
public decimal QuantityAllocatedStock { get; set; }
}
Я звоню выше в асинхронном методе. Какая информация о бине становится нулевой, когда полная остановка включена.
StockWarehouseInfoBins binInfo = new StockWarehouseInfoBins();
binInfo = await restServices.GetWarehouseBinsInformaiton(lblstockCode.Text, SouceWarehouseName);
Я предполагаю, что мне нужно URL-кодировать вызовы API, но есть ли способ сделать это на HTTP-клиенте, поэтому мне не нужно менять каждый вызов?