【问题标题】:call the Web api get method using data params c#使用数据参数 c# 调用 Web api get 方法
【发布时间】:2013-10-17 18:24:39
【问题描述】:

我可以在客户端调用 Web api 方法,现在我想用 c# 代码实现它。在这里我正在编写我的 jquery 代码。

$(document).ready(function () 
{
    $('#btnSubmit').click(function () 
    {
          var Params = 
          {
                    AsOndate: Todate,
                    BCRefCode: 100,
                    AccID: 90000
          };
          $.ajax({
                    type: "GET",
                    url: 'http://localhost:51093/api/account/',
                    //url: 'http://192.168.0.171:51093/api/account/',
                    data: Params,
                    dataType: "json",
                    traditional: true,
                    success: ajaxSuccess,
                    error: ajaxError
          });
});

我正在调用 web api 方法

public IEnumerable GetAccountListForMapping(Params param)
    {
        AccList _AccList = new AccList();
        ListParams lstParam = new ListParams();
        //lstParam.Add("@FromDate", Fromdate);
        lstParam.Add("@AsOnDate", param.AsOndate);
        lstParam.Add("@BCRefCode", param.BCRefCode);
        lstParam.Add("@AccID", param.AccID);
        _AccList = (AccrList)_AccList.GetAccountMappedList(lstParam);
        return _AccList;
    }

这在 jquery 调用中运行良好.. 以及如何编写相同的 C# 代码

这是我尝试过的

        Params param1 = new Params();
        param1.AsOndate = System.DateTime.Today;
        param1.AccID = 90000;
        param1.BCRefCode = 100;
        HttpClient client = new HttpClient();

        client.BaseAddress = new Uri("http://localhost:51093/");
        client.DefaultRequestHeaders.Accept.Add(new  MediaTypeWithQualityHeaderValue("application/json"));
        HttpResponseMessage response = client.GetAsync("/api/account", param1, new JsonMediaTypeFormatter()).Result;
        if (response.IsSuccessStatusCode)
        {.....
        }

【问题讨论】:

    标签: c# jquery json asp.net-web-api dotnet-httpclient


    【解决方案1】:

    得到了答案,它对我有用

    protected void btnGetdata_Click(object sender, EventArgs e)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:xxxx/");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            string param = "AsOnDate=" + System.DateTime.Today + "&AccID=" + 90000 + "&BCRefCode=" + 100;
            HttpResponseMessage response = client.GetAsync("/api/account?" + param, HttpCompletionOption.ResponseContentRead).Result;
            if (response.IsSuccessStatusCode)
            {
                var aa = response.Content.ReadAsAsync<object>().Result;
                object obj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<YourClassName>>(aa.ToString());
            }
        }
    

    谢谢大家

    【讨论】:

      【解决方案2】:

      使用这个方法。

          string param = "AsOndate=" + System.DateTime.Today + "&AccID=" + 90000 + "&BCRefCode=" + 100;
          HttpResponseMessage response = client.GetAsync("/api/account?" + param,HttpCompletionOption.ResponseContentRead).Result;
      

      谢谢。

      【讨论】:

      • 我收到错误:错误 'System.Net.Http.HttpClient.GetAsync(string, System.Net.Http.HttpCompletionOption)' 的最佳重载方法匹配有一些无效参数
      • 现在好了。它触发正确的方法并返回一些“响应”。我们如何反序列化这个响应?
      【解决方案3】:

      继续@felix 给出的答案

      由于你没有更改api代码的参数,它肯定会出错:

          public IEnumerable GetAccountListForMapping(string param)
          {
              // Your Code
          }
      

      现在从“参数”字符串中提取该数据。

      我希望这会奏效。

      【讨论】:

        猜你喜欢
        • 2017-09-25
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-05
        • 1970-01-01
        相关资源
        最近更新 更多