[英]C# post JSON data to REST API
I am new to REST API JSON but have been able to consume a few API with asp.net. 這是我目前面臨的問題。
我已經能夠使用這種方法將 JSON 數據發送到 API。
public void PostData()
{
string sName = sysName.Text;
string sDescrip = sysDescrip.Text;
var httpclient = new HttpClient();
httpclient.BaseAddress = new Uri("http://33.248.292.99:8094/bizzdesk/sysconfig/api/");
var sys = new Bizsys(){name= sName, description= sDescrip};
httpclient.PostAsJsonAsync("system", sys);
}
它工作得很好。
現在我修改代碼以適應更多的值:
var httpclient = new HttpClient();
// ArrayList paramList = new ArrayList();
httpclient.BaseAddress = new Uri("http://179.683.197.115:9091/tua-slte/api/organisations/");
var org = new Organisation() { id=1, name = "inno", abbreviation = "abx", type="school", sort = 7, isShow = true, createdBy=8, createdDate = "10/04/2017", editedBy = 11, editDate="11/04/2017"};
var bas = new Basic() { id=1, username = "inno", password = "123", firstName="Innocent", lastName="Ujata", email = "ea@bizz.co", mobile = "123456", photo="10201001", loginIp="127.0.0.1", loginDate="10/04/2017", locked=false, organisation = org, createdDate = "10/04/2017", editedBy = 11, editDate="11/04/2017", admin=true};
var org2 = new Organisation2() { id=1, name = "inno", abbreviation = "abx", type="school", sort = 7, isShow = true, createdBy=17, createdDate = "10/04/2017", editedBy = 09, editDate="11/04/2017"};
var hq = new HeadQuarter() { zonId=09, organisation = org2, zonCode = "123", zonName = "Abuja", zonAddress = "123456", zonCity = "Abuja", zonPostalCode = "120076", zonEmail = "answers", zonPhoneNumber = "0908765", zonFaxNumber = "1212", zonState = "FCT", createdBy=17, createdDate = "10/04/2017", editedBy = 11, editDate="11/04/2017", version=1};
var examp = new RootObject() {basic=bas, headQuarter=hq };
var status = httpclient.PostAsJsonAsync("register", examp);
return status;
它不斷返回:
Id = 19, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"
我對數據進行了硬編碼,以便在使其成為動態之前先查看它的工作情況。
我也嘗試過使用 await async 方法,結果是一樣的。 我在這里看到的所有問題和答案都不相似。
這是什么意思,我做錯了什么?
您正在調用異步方法,但不等待它的結果。
改變:
var status = httpclient.PostAsJsonAsync("register", examp);
至
var status = await httpclient.PostAsJsonAsync("register", examp);
擴展方法PostAsJsonAsync返回Task<HttpResponseMessage>
。 你抓住這個任務,看看它的細節。 如果要返回已完成請求的狀態碼,則應等待任務完成,然后從響應消息中獲取狀態碼:
private async Task<HttpStatusCode> PostSomethingAsync()
{
...
var response = await httpclient.PostAsJsonAsync("register", examp);
return response.StatusCode;
}
或者您可以同步等待請求完成:
private HttpStatusCode PostSomething()
{
...
var response = httpclient.PostAsJsonAsync("register", examp).Result;
return response.StatusCode;
}
那是因為你沒有在等待電話
var status = await httpclient.PostAsJsonAsync("register", examp);
或者,使用ConfigureAwait()
var status = httpclient.PostAsJsonAsync("register", examp).ConfigureAwait(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.