我正在开发一个与我们的(我们自己的)API进行通信的Android应用程序。它旨在使用请求方法POST和非操纵性请求GET(因为它应该在RESTful应用程序中)在操纵性请求中使用API。Android:HttpUrlConnection使用POST发送请求身体(而不是GET)
要验证或向请求添加参数,已使用HTTP请求正文(在GET和POST请求中)。 (是的,可以并允许按HTTP定义向GET请求添加请求主体(请参阅e.g. this post))。该帖子通常说,可以添加请求主体,但服务器可能在请求期间不使用它。
问题是,该请求方法总是被设置为POST,没有马瑟如果我将它设置为连接配置中是行不通的,即使getRequestMethod
不将其设置为通过setRequestMethod("GET")
GET后得到的回报。
的机器人应用程序使用HttpsURLConnection的(这是从HttpURLConnection的扩展类,所以它应该表现与之相似)。
通过调用这些方法,请求主体将出席:
https.setDoInput(true);
OutputStream os = https.getOutputStream();
os.write(outputInBytes);
os.close();
,并通过调用https.setRequestMethod("GET")
,请求方法应设置为GET。
一个小调查后,OutputStream os = https.getOutputStream();
设置请求方法为POST行,后来我把它重新获得它仍然GET,直到连接结束(由https.getRequestMethod()
返回)
但最终服务器通过请求方法POST接收请求。
所以我的具体问题是:
- 是否有针对此问题可能的解决方法/解决方案?
- 将请求主体添加到GET请求真的不好吗?
目前,我刚刚设置所有的请求到POST,所以没有问题(它并没有问题(我不会有这样的问题,但由于几个原因,我想知道肯定的有没有其他办法可以解决这个问题)
编辑:documentation of the getOutputStream() method说:
默认请求方法更改为“POST”时,此方法被调用。
由于之前想的方法,但我目前设置请求方法来获取_before_了'连接()'方法。 'getRequestMethod'然后返回** GET **,但请求仍然使用POST(这是我的问题)执行 –
如果您要发送数据,这将被认为是一个帖子。一个GET方法不应该发送信息。查询应该放入网址中,或者通过在标题中添加请求属性。在这里我看到一个outputInBytes,它是什么? – xiaomi
我确实发送参数作为GET参数或在标题字段中是常见的,但是[在这篇文章后(与原文章中的链接相同)](http://stackoverflow.com/a/983458/5045290),它允许每个RFC将请求主体包含到GET请求中。但我认为不发送GET请求体将会更好,因为没有多少客户机/服务器明白这是可能的。 –