![](/img/trans.png)
[英]Using C# HttpClient, how to POST a string HttpContent to ASP.net Core web API?
[英]How do I correctly POST an object to ASP.NET Web API using HttpClient in C#?
我已经尝试了几天,以找到使用C#客户端(特别是我的Windows Forms应用程序)将对象发布到Web API控制器方法的正确方法。 这是我使用对象调用Web API的代码:
private async void insertDocument(Document doc)
{
using (var client = new HttpClient())
{
var response = await client.PostAsJsonAsync(
Constants.API_ROOT_URI + "Documents/Post", doc);
if (response.IsSuccessStatusCode)
{
MessageBox.Show("Document posted successfully.");
}
else
{
MessageBox.Show("Document NOT posted successfully.");
}
}
}
这是我的Web API中的控制器POST方法:
// POST api/Documents (INSERT)
public HttpResponseMessage Post([FromBody] Document doc)
{
if (doc == null)
{
Request.CreateErrorResponse(HttpStatusCode.BadRequest,
"Could not read the Document from body");
}
bool success = docBL.insertDocumentEntry(doc);
if (success)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest,
"Could not save Document model to database");
}
最后这是我的WebApiConfig
文件中的路由模板:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
我尝试了许多方法来完成此任务,并将我的Document对象从C#UI客户端正确地获取到Web API控制器方法,并且我尝试过的每一种方法都导致响应变量中的“ StatusCode 500:Internal Server Error”当我使用断点调试时我的insertDocument
方法。 有人可以告诉我我在做什么错吗?
我发现自己在做错什么,我很惊讶花了这么长时间才看到错误!
事实证明,我并没有填写作为JSON传递给Web API的对象的所有属性。 没有封装在head对象中封装的某些对象,因此API将JSON注册为无效的Document对象。
感谢所有的评论!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.