产品代码导致Web MVC API调用失败

时间:2019-07-10 19:43:50

标签: c# asp.net-mvc asp.net-web-api

我正在使用mvc5 Web API为xamrian中的移动应用程序提供动力,在大多数情况下,Web API调用可以100%起作用,但是今天我遇到了这样的情况:产品代码中出现了句号到Web 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; }
 }

我在异步方法中调用上述方法。鼓励使用句号时哪个bininfo变为空。

 StockWarehouseInfoBins binInfo = new StockWarehouseInfoBins();
 binInfo = await restServices.GetWarehouseBinsInformaiton(lblstockCode.Text, SouceWarehouseName);

我想我需要对API调用进行URL编码,但是有没有一种方法可以在HTTP客户端上执行此操作,因此我不需要更改每个调用?

0 个答案:

没有答案