【发布时间】:2017-04-15 01:07:25
【问题描述】:
目前要向 API 接口发送参数化的 GET 请求,我正在编写以下代码:
api/master/city/filter?cityid=1&citycode='ny'
但我发现 URL 长度有 2,083 个字符的限制。
为避免这种情况,我想在 GET 请求的内容正文中以 json 格式发送参数。
但是,我发现 HttpClient 的所有 Get 方法都不允许发送内容主体。对于 POST,我可以看到 HttpClient 中有一个名为 PostAsync 的方法,它允许内容主体。
有没有办法为不在 URL 中的 GET 请求发送参数以避免 URL 长度限制?
【问题讨论】:
-
看看这个:stackoverflow.com/questions/978061/http-get-with-request-body 所以基本上,即使理论上你可以做到这一点,但你真的不应该这样做。
-
您不能使用 GET 请求发送正文,不能使用 HttpClient 或 WebClient 或其他任何东西。但即使您设法在低级别执行此操作,服务器也不会解析正文,因为它会将其视为 GET 请求。
-
您不能这样做的原因是,根据定义,GET 旨在检索资源。不太可能有人需要那么多字符来检索资源。您更有可能打算提交数据而不是重新获取数据,这是 POST 的设计目的。 w3.org/Protocols/rfc2616/rfc2616-sec9.html
-
可能是 GET,例如 getbyWhere? id=&id=.... 但是它达到了 4K 限制,使它成为一个帖子也不好。
-
@SelmanGenç 错了,看我的回答。
标签: c# get request dotnet-httpclient