我正在开发一个与(我们自己的)API通信的Android应用程序。它的意思是在请求方法 POST 和非操作请求 GET 的操作请求中使用API(因为它应该在 RESTful 中)应用)。
要对请求进行身份验证或添加参数,已使用HTTP请求正文(在GET和POST请求中)。 (是的,可以并且允许为每个HTTP定义的GET请求添加请求主体(参见e.g. this post))。该帖子通常说,可以添加请求正文,但服务器可能在请求期间不使用它。
问题是,请求方法始终设置为POST,如果我在连接配置期间将其设置为GET,即使getRequestMethod
确实返回GET后也没有问题通过setRequestMethod("GET")
将其设置为GET。
Android应用程序使用 HttpsURLConnection (这是来自 HttpURLConnection 的扩展类,所以它的行为应该相似)。
通过调用这些方法,将有一个请求体:
https.setDoInput(true);
OutputStream os = https.getOutputStream();
os.write(outputInBytes);
os.close();
通过调用https.setRequestMethod("GET")
,请求方法应设置为GET。
经过一番调查之后,行OutputStream os = https.getOutputStream();
将请求方法设置为POST,之后我再次将其设置为GET并保持GET直到连接结束(由https.getRequestMethod()
返回)< / p>
但最终服务器通过请求方法POST接收请求。
所以我的具体问题是:
目前我刚刚将所有请求设置为POST,因此没有问题(我不会有这样做的问题,但出于几个原因我想知道肯定那里没有其他方法可以解决这个问题)
修改:documentation of the getOutputStream() method说:
默认请求方法更改为&#34; POST&#34;调用此方法时。
答案 0 :(得分:1)
默认情况下,HttpURLConnection
是GET方法(默认情况下getDoInput()
为true)。
如果您使用setDoOutput(true)
,它将成为POST方法。
如果您需要其他方法(PUT,DELETE等等),那么您将使用setRequestMethod(string)。
当然,您必须在connect()
方法