如何通过控制台应用程序调用POST RESTFUL服务

时间:2014-12-19 15:29:37

标签: c# wcf rest post console

我有一个rest ful服务(POST)接受Json对象作为输入(Fiddler中的Request body)。现在我想使用动态值(从文本文件或硬编码值读取)从Console Applciation使用服务。我将记录操作,对于此测试数据XXXXX,服务返回值。

任何人都可以帮助我自动化这个过程。我希望从Console应用程序中提供此服务。

请注意输出也是JSON字符串。

任何建议都对我有用。

2 个答案:

答案 0 :(得分:0)

发出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);

答案 1 :(得分:0)

从控制台项目中的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

的详细信息