我绝对会把头发撕成这个。
我正在尝试用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)应该自动建立连接;但是,当我通过代码调试时,受保护的成员conn.method保持为GET。
我也尝试将url.openConnection()强制转换为HttpURLConnection,并在其上调用.setRequestMethod(“POST”),这对改变conn.method没有任何作用。
作为奖励,我正在尝试进行soundcloud身份验证,基本上我想到的每一种方式都是完全失败的......也许有人有更好的解决方案吗?
答案 0 :(得分:1)
您是否尝试过使用SoundCloud的Java SDK?
https://github.com/soundcloud/java-api-wrapper
这应该使大部分HTTP / OAuth2远离您的代码。
但是,即使你想要更多地控制你所做的事情,使用正确的HTTP客户端库(如Apache)通常也是一个好主意,而不是试图再次对它进行基本的Java SE支持。查看:http://hc.apache.org/httpcomponents-client-ga/index.html