簡體   English   中英

通過 HTTP 請求使用 C# 讀取 Json

[英]Reading Json with C# via HTTP Request

我在從我們的本地 API 讀取 json 時遇到問題。

這是一個眾所周知的公共 json 端,我也用於測試: https : //jsonplaceholder.typicode.com/todos

這是我本地 API 上的 Json: 在此處輸入圖片說明

在 C# 我試過這個:

        HttpClient client = new HttpClient();

        string httpResponse = "";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(testurl);
        WebResponse responseinger = null;
        StreamReader reader = null;

        static async Task Main(string[] args)
        {
            Program p = new Program();
            await p.Get();
        }

        public async Task Get()
        {
            string response = await client.GetStringAsync("https://jsonplaceholder.typicode.com/todos");
            Console.WriteLine(response);
            Console.WriteLine();

            string response2 = await client.GetStringAsync(testurl);
            Console.WriteLine(response2);
            Console.WriteLine();

            string json = JsonConvert.SerializeObject(response2);
            Console.WriteLine(json);
            Console.WriteLine();

           
            try
            {
                responseinger = request.GetResponse();
            }
            catch (WebException ex)
            {
                responseinger = ex.Response;
            }

            reader = new StreamReader(responseinger.GetResponseStream());
            httpResponse = reader.ReadToEnd();

            Console.WriteLine(reader);
            Console.WriteLine();
            Console.WriteLine(httpResponse);
            Console.WriteLine();

            using (WebClient wc = new WebClient())
            {
                var jsonwc = wc.DownloadString(testurl);
                Console.WriteLine(jsonwc);
                Console.WriteLine();
            }
        }

所以我使用了不同的方法來獲取我的 json。

來自公共 json 端的 json 有效,但我的本地無效。

這是我在控制台中的輸出: 在此處輸入圖片說明

我該怎么辦? 提前致謝!

嘗試添加您的接受標頭

    var req = WebRequest.CreateHttp(uri);              
    req.Headers.Add(HttpRequestHeader.Accept, "application/ json");
    req.Method = "Get";

解決方案:

我的問題是 gzip 它壓縮了我的 json。

            using (WebClient wc = new WebClient())
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(testurl);

                req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

                responseinger = req.GetResponse();

                reader = new StreamReader(responseinger.GetResponseStream());
                httpResponse = reader.ReadToEnd();

                //Console.WriteLine(reader);
                //Console.WriteLine();
                Console.WriteLine(httpResponse);
                Console.WriteLine();
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM