[英]Reading Json with C# via HTTP Request
我在從我們的本地 API 讀取 json 時遇到問題。
這是一個眾所周知的公共 json 端,我也用於測試: https : //jsonplaceholder.typicode.com/todos
在 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.