【问题标题】:How to call Web Api in Console Application using Query string Param如何使用查询字符串参数在控制台应用程序中调用 Web Api
【发布时间】:2019-10-25 16:31:51
【问题描述】:

我的查询字符串中有参数,所以我需要像下面给定的 url 一样传递

URL + ?dd={{Some Json Data}}&accessKey=ddfr54r5g5r

WebClient webClient = new WebClient();
webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
string url = "URL + ?dd={{Some Json Data}}&accessKey=ddfr54r5g5r";
var jsonData = webClient.DownloadData(url);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RootObject));
RootObject obj = new RootObject();
obj = (RootObject)ser.ReadObject(new MemoryStream(jsonData));

谁能分享一些适用于您的 API 的方法。

【问题讨论】:

    标签: c# api web console-application call


    【解决方案1】:

    如果您的URL 是一个变量,那么您为什么要对它进行字符串化。应该是这样的

    string url = URL + "?dd={{Some Json Data}}&accessKey=ddfr54r5g5r";
    

    再次不需要实例化 DataContractJsonSerializer 来反序列化数据。而是使用Newtonsoft.Json 并调用DeserializeObject() 方法,如var data = JsonConvert.DeserializeObject<RootObject>(jsonData);

    我建议使用System.Net.Http.HttpClient 类,而不是提供更多控制权。类似的东西

       using (HttpClient client = new HttpClient())
       {
          try   
          {
             string responseBody = await client.GetStringAsync(uri);
             var data = JsonConvert.DeserializeObject<RootObject>(responseBody);         
          }  
          catch(HttpRequestException e)
          {
              //log exception
          }
       }
    

    请参阅https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client 了解更多信息

    【讨论】:

    • 显示不允许的方法 string apiUrl = URL + "?payload=" + json + "&accessKey=4b72c9f6-9393-475b-9c72-72ab40a4d9b9"; HttpResponseMessage 响应 = client.PostAsync(apiUrl, null).Result; var rest = response.Content.ReadAsStringAsync().Result; APIResponseObject 数据 = JsonConvert.DeserializeObject(rest);
    • 这个错误我会得到:{StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
    • @RomilShah 用于发布操作将数据作为消息正文而不是通过 url 传递
    • 这是 HTTPGET 操作 & 我拥有的 API 是第 3 方 API 他们只传递了查询字符串中的所有值,而不是正文或标题...。你有什么想法吗??使用查询字符串
    猜你喜欢
    • 2019-10-16
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多