![](/img/trans.png)
[英]How do I correctly POST an object to ASP.NET Web API using HttpClient in C#?
[英]What do I need to do to send out Protobuf serialized Data using C# ASP .NET web api?
我是protobuf的新手,并且是.net的新手。 所以我可能需要帮助。 我的PersonsController有以下代码片段:
public class PersonController : ApiController
{
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public int ID { get; set; }
[ProtoMember(2)]
public string First { get; set; }
[ProtoMember(3)]
public string Last { get; set; }
}
// GET api/values
public IEnumerable<Person> Get()
{
List<Person> myList = new List<Person> {
new Person { ID = 0, First = "Judy", Last = "Lee" },
new Person { ID = 1, First = "John", Last = "Doe" },
new Person { ID = 2, First = "George", Last = "Poole" },
};
return myList;
}
}
我想知道是否足以发送出protobuf数据并被其他应用程序使用?
我正在尝试直接在Google chrome中访问它,而我得到的只是数据的XML格式。
<ArrayOfPersonController.Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SampleSerialize.Controllers"> <PersonController.Person> <First>Judy</First> <ID>0</ID> <Last>Lee</Last> </PersonController.Person> <PersonController.Person> <First>John</First> <ID>1</ID> <Last>Doe</Last> </PersonController.Person> <PersonController.Person> <First>George</First> <ID>2</ID> <Last>Poole</Last> </PersonController.Person> </ArrayOfPersonController.Person>
我怎么知道我是否能够发送序列化的数据?
您需要做几件事:
您需要一个Web客户端,该客户端实际上在请求的Accept
标头中 要求提供protobuf序列化的内容 。 Chrome不会执行此操作,它只询问您希望Web浏览器要求的诸如text / html,image / *等内容。 protobuf没有标准的内容类型,因此您可以定义自己的内容-许多人都使用application/x-protobuf
。 Chrome浏览器开发人员工具(例如Advanced REST客户端)可让您从浏览器中使用REST API,并根据需要设置请求标头。
在Web API方面,您需要创建并注册自己的媒体格式化程序。 有一个很好的演练在这里 。 您可能会从BufferedMediaTypeFormatter派生来进行protobuf(de /)序列化,并且需要配置此类以处理application/x-protobuf
请求。 然后,您需要在Web API管道中注册它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.