Как вызвать службу POST RESTFUL через консольное приложение

У меня есть спокойный сервис (POST), который принимает объект Json в качестве входных данных (тело запроса в Fiddler). Теперь я хотел использовать службу из консольного приложения с динамическими значениями (считываемыми из текстового файла или жестко закодированными значениями). Я буду регистрировать такие действия, как, например, для этих тестовых данных XXXXX, служба возвращает значения.

Может ли кто-нибудь помочь мне автоматизировать этот процесс. Я бы хотел воспользоваться этой услугой из консольного приложения.

Пожалуйста, обратите внимание, выведите также строку JSON.

Любое предложение будет мне действительно полезно.


person BlueMoon    schedule 19.12.2014    source источник


Ответы (2)


Чтобы сделать запрос 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);
person mkocubinski    schedule 19.12.2014

Установите следующий пакет веб-API из nuget в своем консольном проекте.

Добавьте ссылку на 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 здесь и здесь

person HoXa    schedule 19.12.2014