asp.net-mvc – 在使用WEB API时,如何从POST中提取HttpResponseMessage中的内容?
发布时间:2020-05-23 19:43:07 所属栏目:asp.Net 来源:互联网
导读:一个非常典型的CRUD操作将导致一个对象的Id设置一旦持久化。 所以,如果我在接受一个对象的控制器上有Post方法(JSON序列化,比方说)并返回一个HttpResponseMessage,其中HttpStatusCode Created和Content设置为同一个对象,Id从null更新为整数,那么我如何使
|
一个非常典型的CRUD操作将导致一个对象的Id设置一旦持久化。 所以,如果我在接受一个对象的控制器上有Post方法(JSON序列化,比方说)并返回一个HttpResponseMessage,其中HttpStatusCode Created和Content设置为同一个对象,Id从null更新为整数,那么我如何使用HttpClient获取在那个Id值? 它可能很简单,但我看到的只是System.Net.Http.StreamContent。从post方法返回Int更好吗? 谢谢。 更新(以下回答): 一个工作的例子…… namespace TryWebAPI.Models {
public class YouAreJoking {
public int? Id { get; set; }
public string ReallyRequiresFourPointFive { get; set; }
}
}
namespace TryWebAPI.Controllers {
public class RyeController : ApiController {
public HttpResponseMessage Post([FromBody] YouAreJoking value) {
//Patience simulated
value.Id = 42;
return new HttpResponseMessage(HttpStatusCode.Created) {
Content = new ObjectContent<YouAreJoking>(value,new JsonMediaTypeFormatter(),new MediaTypeWithQualityHeaderValue("application/json"))
};
}
}
}
namespace TryWebApiClient {
internal class Program {
private static void Main(string[] args) {
var result = CreateHumour();
Console.WriteLine(result.Id);
Console.ReadLine();
}
private static YouAreJoking CreateHumour() {
var client = new HttpClient();
var pennyDropsFinally = new YouAreJoking { ReallyRequiresFourPointFive = "yes",Id = null };
YouAreJoking iGetItNow = null;
var result = client
.PostAsJsonAsync("http://localhost:1326/api/rye",pennyDropsFinally)
.ContinueWith(x => {
var response = x.Result;
var getResponseTask = response
.Content
.ReadAsAsync<YouAreJoking>()
.ContinueWith<YouAreJoking>(t => {
iGetItNow = t.Result;
return iGetItNow;
}
);
Task.WaitAll(getResponseTask);
return x.Result;
});
Task.WaitAll(result);
return iGetItNow;
}
}
}
似乎Node.js受到启发。 解决方法您可以使用ReadAsAsync< T>.NET 4(你可以在没有延续的情况下做到这一点) var resultTask = client.PostAsJsonAsync<MyObject>("http://localhost/api/service",new MyObject()).ContinueWith<HttpResponseMessage>(t => {
var response = t.Result;
var objectTask = response.Content.ReadAsAsync<MyObject>().ContinueWith<Url>(u => {
var myobject = u.Result;
//do stuff
});
});
.NET 4.5 var response = await client.PostAsJsonAsync<MyObject>("http://localhost/api/service",new MyObject());
var myobject = await response.Content.ReadAsAsync<MyObject>(); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 身份电子邮件与破折号在Asp.Net身份
- 如何将Ninject集成到ASP.NET Core 2.0 Web应用程序中?
- asp.net-mvc – Silverlight 3是否会改变MVC与Silverlight的
- asp.net – 我可以在GoDaddy上使用NHibernate吗?
- asp.net – MVC 5使用旧表单身份验证而不是OWIN
- asp.net – 在IIS 7或IIS 7.5集成模式下,默认文档中可能不会
- ASP.NET十七种正则表达试
- asp.net – IIS 7在一个服务器上引发web.config的“重复部分
- asp.net – 文件上传控件HasFile始终为false,name始终为Emp
- asp.net-mvc-3 – 在MVC视图中使用条件编译符号
推荐文章
站长推荐
- asp.net – Windows Azure VM网站设置
- ASP.NET通过分布式Session提升性能
- asp.net – 无法加载文件或程序集“Microsoft.We
- asp.net – 小数点后尾数为零
- asp.net-core – 哪些.NET框架版本支持.NET Fram
- asp.net-mvc – 在MVC5中呈现Razor的部分视图
- ASP.NET MVC删除操作方法中的查询字符串
- asp.net-mvc-2 – 使用Html.LabelFor显示人类可读
- asp.net-mvc – 使用ASP.NET MVC进行消防和遗忘
- asp.net-mvc – ASP.NET MVC从预览5升级到Beta版
热点阅读
