簡體   English   中英

如何使用C#將自定義對象發布到Web API

[英]How to POST custom object to web api using C#

我已經開發並部署了Web API。 它適用於單元測試和提琴手。 但是,如果我創建一個單獨的項目並嘗試將數據發布到該項目,它將發回一個400 Bad Request錯誤。 我正在尋找一種使用C#編寫的客戶端發布此自定義對象的方法。 與WCF不同,沒有matadata可以從中創建這些對象的代理,然后實例化並將其傳遞給調用方法。 如何將自定義對象(例如Customer)作為參數傳遞給方法?

URL將為http:// host / directory / api / customer / AddNewCustomer ,方法定義類似於

[HttpPost]
public bool AddNewCustomer(Customer customerObj)

編輯

以下是我的客戶代碼

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://host/directory/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.Timeout = TimeSpan.FromSeconds(30.0);

// strong typed instance
var values = new JObject();
values.Add("FirstName", "John");
values.Add("LastName", "Doe");

HttpContent content = new StringContent(values.ToString(), Encoding.UTF8,"application/json");

var response = client.PostAsJsonAsync("api/customer/AddNewCustomer", content).Result;

在嘗試了許多解決方案之后,我開始知道未設置內容對象。 這很奇怪,但事實就是如此。 所以我嘗試直接將JObject傳遞給HttpContent,但它可以正常工作

// strong typed instance
var values = new JObject();
values.Add("FirstName", "John");
values.Add("LastName", "Doe");

// this is not set!!!
HttpContent content = new StringContent(values.ToString(), Encoding.UTF8,"application/json");

var response = client.PostAsJsonAsync("api/customer/AddNewCustomer", values).Result;

理想情況下,Customer將位於單獨的模型類庫中,並且您可以在項目之間共享該dll。 但是具有相同屬性名稱的任何對象都可以使用,因為Web API會將它們序列化為Json或xml並自動進行映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM