程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在Web Api中集成protobuf,apiprotobuf

在Web Api中集成protobuf,apiprotobuf

編輯:關於.NET

在Web Api中集成protobuf,apiprotobuf


  • 注冊ProtoBufFormatter

  • 設置DTO

  • 客戶端調用

  •       static  void Main(string[] args)
            {
          
                var httpClient = new HttpClient();
             
                httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/x-protobuf"));
    
                var response = httpClient.GetAsync("http://localhost:60339/api/Default/GetItem").Result;
                //把 ProtoBuf Stream 反序列化成 集合
                var  obj = (RuntimeTypeModel.Default).Deserialize(response.Content.ReadAsStreamAsync().Result, null, typeof(List<Item>)) as List<Item>;
                
                Console.WriteLine(obj.Count);
    
                //設置請求頭
                var content = new ObjectContent<List<Item>>(obj, new ProtoBufFormatter());
                content.Headers.ContentType = new MediaTypeHeaderValue("application/x-protobuf");
    
                var postResponse1=  httpClient.PostAsync("http://localhost:60339/api/Default/PostItem", content).Result;
                var postResult = postResponse1.Content.ReadAsStreamAsync().Result;
                var intValue = (RuntimeTypeModel.Default).Deserialize(postResult, null, typeof(int));
    
                Console.WriteLine(intValue);
                Console.ReadKey();
            }
    

     使用Fiddler發送Accept 分別為Json,Xml,Protobuf三種格式來請求數據

     

     

    git

     https://github.com/xlb378917466/WebApi_protobuf

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved