我能用HttpURLConnection做一个带有请求体的http GET请求吗?

4
我需要执行一个HTTP GET请求来调用REST服务,并在GET中包含一个body。不幸的是,在连接上设置#setDoOutput(true)会强制使用POST。有没有办法发送带有body的GET请求? 编辑:我要发送的body是JSON格式的。

设置'body',发送参数是什么意思? - Wayne Weibel
我注意到这是可行的,但使用HttpUrlConnection似乎不可能。 - dm78
2个回答

6

使用HttpURLConnection发送HTTP GET请求时无法发送任何内容。通过在HttpURLConnection上设置setDoOutput(true),可以强制将动词更改为POST。

我使用的REST API文档描述了一个具有JSON主体的端点,但是也接受URL参数。


0

通过HttpUrlConnection可能不太可能实现,尽管您可能能够通过其他API来实现。但是,如果您必须以这种方式进行操作,则您的架构中存在问题的可能性很高,因为它违反了GET Http方法的基本用法,并且可能会出现不同的问题,例如:

  • 如果您尝试利用缓存,代理将不会查看GET正文以查看参数是否对响应产生影响。
  • 这不是基于标准实践的良好实现,可能会在某些浏览器/服务中引起问题。

请查看此问题以获取更多信息。

HTTP GET with request body

希望这可以帮助您。

祝好!


我在我的问题的评论中链接了那个问题的被接受答案。 - dm78

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接