วิธีเรียกใช้บริการ POST RESTFUL ผ่านแอปพลิเคชันคอนโซล

ฉันมีบริการส่วนที่เหลือ (POST) ซึ่งยอมรับวัตถุ Json เป็นอินพุต (เนื้อหาคำขอใน Fiddler) ตอนนี้ฉันต้องการใช้บริการจาก Console Applciation ด้วยค่าไดนามิก (ไม่ว่าจะอ่านจากไฟล์ข้อความหรือค่าฮาร์ดโค้ด) ฉันจะบันทึกการดำเนินการเช่น สำหรับข้อมูลทดสอบ 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

ติดตั้งแพ็กเกจ web 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