我有兩個項目的解決方案,一個是我的webapi服務,另一個是我的項目mvc。我正在從我的控制器呼叫該服務。我的服務有GET,POST,PUT所有方法。在我看來,我正在使用提交按鈕,並調用後控制器方法,後者又調用我的服務。這裏我面臨的問題是總是調用GET方法。我想火POST方法在我的服務如何使web API Post方法調用
控制器POST方法
[HttpPost]
public ActionResult Create(Test test)
{
if (ModelState.IsValid)
{
Test objTest = MyService.Create(test);
if (objTest == null)
{
return HttpNotFound();
}
return RedirectToAction("Index");
}
}
這裏調用服務
**public Test Create(Test test)
{
string uri = baseUri + "Test/";
using (HttpClient httpClient = new HttpClient())
{
Task<HttpResponseMessage> response = httpClient.PostAsJsonAsync(uri, new StringContent(JsonConvert.SerializeObject(Test)));
return JsonConvert.DeserializeObjectAsync<Test>(response.Result.Content.ReadAsStringAsync().Result).Result;
}
}**
這是後
**// POST api/Test
public HttpResponseMessage PostTest(test test
{
if (ModelState.IsValid)
{
db.Test.Add(test);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, test);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = test.TestID }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
****************
**// GET api/Test
public IEnumerable<Test> GetTest()
{
var tests= db.Tests;
return tests.AsEnumerable();
}**
它總是調用上面的Get方法。我對web api服務完全陌生。有人能以適當的方式引導我,我錯了。我沒有使用任何ajax來調用post方法。
我想大衛說我需要序列化它。我的案例測試是一個obeject而不是一個字符串。如果我使用strigncontent,我會得到無效的參數異常 – jubi
httpClient.PostAsync(uri,Object); – jackotonye