【发布时间】:2018-01-03 12:57:59
【问题描述】:
我有一个方法 ReadJsonUrl,它获取一个 JSON 文件的 url(字符串地址(例如:https://www.ah.nl/service/rest/delegate?url=%2Fproducten%2Fproduct%2Fwi224732%2Fsmiths-nibb-it-happy-ones-kruis-rond-paprika))。
此方法读取 JSON 并在控制台中输出一些数据。
但问题是产品的描述输出像
Smiths Nibb-it hap-py on-es kruis-rond pa-pri-ka
但如果我在浏览器中检查 JSON,它会显示
Smiths Nibb-it 快乐的 kruis-rond 辣椒粉
这就是我想要的打印方式。
我认为问题在于,请求是使用 0px x 0px 分辨率的浏览器完成的,因此它返回的单词被分割以保持可读性。如果我让我的浏览器非常小,那么它也会用破折号显示描述。 我在代码中添加了一个用户代理,但这不起作用。
有人知道如何解决这个问题吗?
我的代码:
public static async Task<object> ReadJsonUrl(string address)
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
HttpResponseMessage response = await client.GetAsync(address);
var content = await response.Content.ReadAsStringAsync();
//JObject obj = JObject.Parse(content);
var data = Empty.FromJson(content);
var product = data.Embedded.Lanes[4].Embedded.Items[0].Embedded.Product;
Console.WriteLine(product.Id);
Console.WriteLine(product.Description);
Console.WriteLine(product.PriceLabel.Now);
Console.WriteLine(product.Availability.Label);
Console.WriteLine("-------------------------------------");
System.Threading.Thread.Sleep(5000);
//the return value is for later use
return product;
}
}
【问题讨论】:
-
什么是
Empty.FromJson()?请提供minimal reproducible example。 -
Json 请求不知道它来自 0x0 浏览器,因此不会影响数据。这要么是
Empty.FromJson()的问题(正如 Thomas 所说,这是什么?)或者它是如何从浏览器显示的(你是怎么做的?)。如果您认为这是 0x0 浏览器的问题,请尝试从 500x500 浏览器调用它,看看是否有任何影响 -
@ThomasWeller 我从这个网站得到了 Empty.FromJson():app.quicktype.io/#l=cs&r=json2csharp
标签: c# json dotnet-httpclient