我有两个项目的解决方案,一个是我的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