【发布时间】:2012-03-02 19:03:19
【问题描述】:
我绝对要为此撕毁我的头发。
我正在尝试在 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 身份验证,但基本上我想到的所有方法都完全失败了......也许有人对此有更好的解决方案?
【问题讨论】:
-
您可以在此处查看 POST 示例:stackoverflow.com/questions/9508606/…
-
这些都没有回答我的问题...我特别在做什么?我已尝试将其显式设置为“POST”方法,但仍然无法正常工作。
-
使用 HTTPClient 库。它极大地简化了您尝试做的事情。
标签: java http post soundcloud