我正在尝试连接到一个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,但我无法让任何这些对我有用.
实现这一目标的最佳方法是什么,我是否在正确的轨道上?
多谢你们.
想要解压缩从 API 获取的 GZipped 响应。尝试了下面的代码,它总是返回类似:-
\n\n\\u001f\xef\xbf\xbd\\b\\0\\0\\0\\0\\0\\0\\0\xef\xbf\xbdY]o........\nRun Code Online (Sandbox Code Playgroud)\n\n我的代码是:
\n\n private string GetResponse(string sData, string sUrl)\n {\n try\n {\n string script = null;\n try\n {\n string urlStr = @"" + sUrl + "?param=" + sData;\n\n Uri url = new Uri(urlStr, UriKind.Absolute);\n\n HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);\n request.Method = "GET";\n request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;\n\n using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())\n using (StreamReader reader = new StreamReader(response.GetResponseStream()))\n {\n script = reader.ReadToEnd();\n } \n }\n catch (System.Net.Sockets.SocketException)\n {\n // The remote site is currently …Run Code Online (Sandbox Code Playgroud)