我正在尝试连接到一个api,它从WCF服务(WCF服务到WCF服务)返回GZip编码的JSON.我正在使用HTTPClient连接到API,并且能够将JSON对象作为字符串返回.但是我需要能够将这些返回的数据存储在数据库中,因此我认为最好的方法是将JSON对象返回并存储在数组或字节中或沿着这些行存储.
我特别遇到的问题是GZip编码的解压缩,并且尝试了很多不同的例子,但仍然无法得到它.
下面的代码是我建立连接和获得响应的方式,这是从API返回字符串的代码.
Run Code Online (Sandbox Code Playgroud)public string getData(string foo) { string url = ""; HttpClient client = new HttpClient(); HttpResponseMessage response; string responseJsonContent; try { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); response = client.GetAsync(url + foo).Result; responseJsonContent = response.Content.ReadAsStringAsync().Result; return responseJsonContent; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); return ""; } }
我一直在关注一些不同的例子,比如这些StackExchange API,MSDN和一些关于stackoverflow,但我无法让任何这些对我有用.
实现这一目标的最佳方法是什么,我是否在正确的轨道上?
多谢你们.
我正在尝试接受压缩响应的请求
var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
Run Code Online (Sandbox Code Playgroud)
我想知道当我添加第二行时,我将不得不手动处理解压缩.
当C#创建HTTP GET请求时,Stackoverflow API返回意外响应.
如果我将http://api.stackoverflow.com/1.1/users/882993粘贴到浏览器地址栏中,我会得到正确的JSON响应:
{
"total": 1,
"page": 1,
"pagesize": 30,
"users": [
{
"user_id": 882993,
"user_type": "registered",
"creation_date": 1312739131,
"display_name": "Jack",
"reputation": 1926,
"email_hash": "69243d90e50d9e0b3e025517fd23d1da",
"age": 23,
"last_access_date": 1358087009,
"website_url": "http://jtbrown.me.uk",
"location": "Birmingham, United Kingdom",
"about_me": "<p>Student.</p>\n",
"question_count": 68,
"answer_count": 79,
"view_count": 115,
"up_vote_count": 98,
"down_vote_count": 3,
"accept_rate": 94,
"association_id": "d64187a3-bf66-4a4d-8e87-6ef18f0397e3",
"user_questions_url": "/users/882993/questions",
"user_answers_url": "/users/882993/answers",
"user_favorites_url": "/users/882993/favorites",
"user_tags_url": "/users/882993/tags",
"user_badges_url": "/users/882993/badges",
"user_timeline_url": "/users/882993/timeline",
"user_mentioned_url": "/users/882993/mentioned",
"user_comments_url": "/users/882993/comments",
"user_reputation_url": "/users/882993/reputation",
"badge_counts": {
"gold": 0,
"silver": 7,
"bronze": 34 …Run Code Online (Sandbox Code Playgroud) 我有一个程序,它产生了很多HttpWebRequests,我读到了使用gzip压缩来加速响应数据的下载.我知道gzip是什么,以及它是如何工作的,但我不知道它在C#中是如何工作的.
假设我有一个简单的GET请求:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.com");
request.Method = "GET";
WebResponse response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
如何在gzip中压缩响应数据?如何显示压缩大小,然后显示未压缩的大小?
谢谢