asp.net-mvc – 在使用WEB API时,如何从POST中提取HttpResponseM
发布时间:2020-12-16 00:19:49 所属栏目: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-mvc – 如何将第二个应用程序添加到MVC网站
- asp.net-mvc – 如何在RegularExpression中忽略大小写?
- asp.net core 运用 Redis 配置步骤
- asp.net-core – 如何使用asp-for标签绑定数组?
- MVC SessionStateAttribute不作为全局属性
- asp.net – 如何使用Process Monitor确定哪个DLL导致BadIma
- asp.net-mvc-3 – asp.net mvc,jquery mobile,phonegap架构
- asp.net-mvc – 使用Fluent验证进行不显眼的自定义/条件验证
- asp.net – 什么是SQL Server Reporting Services?
- asp.net-mvc – 在NerdDinner中首次尝试Linq to Sql – 规则