【发布时间】:2019-09-18 17:58:58
【问题描述】:
我创建了一个控制台应用程序,在其中我向 Stack Exchange API 发出一个简单的 GET 请求以获取一些 cmets。我正在使用Flurl。这个方法是从Main调用的
private static async Task GetComments()
{
dynamic d = await "https://api.stackexchange.com/2.2/comments?page=1&pagesize=5&order=desc&min=1513468800&max=1513555200&sort=creation&site=stackoverflow"
.GetJsonAsync();
}
但是,我得到了这个错误:
{"解析值时遇到意外字符:\u001f.Path '', line 0, position 0."}
我试过这样设置标题,但没有成功。
dynamic d = await new Url("https://api.stackexchange.com/2.2/comments.....")
.WithHeader("Content-Encoding", "gzip")
.WithHeader("Accept-Encoding", "gzip")
.GetJsonAsync();
当我open it in the browser时,URL 确实返回了正确的 JSON
【问题讨论】:
-
可能 flurl 没有浏览器那么宽容,需要去掉 url 中多余的斜杠。
-
@Crowcoder 删除它并尝试。没用:(
-
Flurl 能处理 gzip 吗?
-
无论您是否请求,API 结果都会被压缩。你需要在调用
GetJsonAsync之类的东西之前解压它。 -
@ikegami,SE API 不会接受这样的请求。除非你请求 deflate,否则你会得到 gzip。这些是您使用 SE API 的唯一选择。
标签: c# stackexchange-api flurl