【问题标题】:How to call POST RESTFUL service thru Console application如何通过控制台应用程序调用 POST RESTFUL 服务
【发布时间】:2014-12-19 15:29:36
【问题描述】:

我有一个休息服务 (POST),它接受 Json 对象作为输入(Fiddler 中的请求正文)。现在我想使用带有动态值(从文本文件或硬编码值读取)的控制台应用程序中的服务。我将记录这些操作,例如,对于这个测试数据 XXXXX,服务会返回值。

谁能帮助我如何自动化这个过程。我想从控制台应用程序中使用这项服务。

请注意输出 JSON 字符串。

任何建议都会对我很有帮助。

【问题讨论】:

    标签: c# wcf rest post console


    【解决方案1】:

    要发出 POST 请求,例如:

    var req = WebRequest.Create(url);
    var enc = new UTF8Encoding(false);
    var data = enc.GetBytes(serializedJson);
    
    req.Method = "POST";
    req.ContentType = "application/json";
    req.ContentLength = data.Length;
    
    using (var sr = req.GetRequestStream())
    {
        sr.Write(data, 0, data.Length);
    }
    var res = req.GetResponse();
    var res= new StreamReader(res.GetResponseStream()).ReadToEnd();
    

    您可以从以下对象轻松创建serializedJson

    var serializedJson = Newtonsoft.Json.JsonConvert.SerializeObject(myDataObject);
    

    【讨论】:

      【解决方案2】:

      在您的控制台项目中从nuget 安装以下 web api 包

      添加对 System.Net.Http 和 System.Runtime.Serialization 的引用

      为您要发送和接收的数据创建一个合同类(与您的网络服务中相同)

      [DataContract]
      public class YourObject{
          [DataMember]
          public int Id {get; set;}
      }
      

      在您的控制台应用程序中像这样调用网络服务:

      var client = new HttpClient();
      var response = client.PostAsJsonAsync<YourObject>("http://yourserviceurl:port/controller", objectToPost).Result;
      if(response.IsSuccessStatusCode){
          Console.WriteLine(response);
      }else{
          Console.WriteLine(response.StatusCode);
      }
      

      更多关于 webapi herehere 的信息

      【讨论】:

        猜你喜欢
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        相关资源
        最近更新 更多