我绝对把我的头发扯掉了。
我正在尝试用 Java 发出 HTTP POST 请求,但它一直将其作为 GET 发送。我遵循了几种不同的方式来发送 POST 请求,但所有这些方式最终都以 GET 的形式发送。
这是我目前拥有的:
URL url = new URL("https://api.soundcloud.com/oauth2/token");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.close();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
resp += line;
}
rd.close();
我在 StackOverflow 上的一篇文章中读到 conn.setDoOuput(true) 应该自动使连接成为 POST;但是,当我通过代码进行调试时,受保护的成员 conn.method 保持为 GET。
我还尝试将 url.openConnection() 转换为 HttpURLConnection 并在其上调用 .setRequestMethod("POST") ,这完全没有改变 conn.method。
作为奖励,我正在尝试进行soundcloud身份验证,基本上我想到的每一种方式都完全失败了......也许有人对此有更好的解决方案?