Java中的HTTP POST请求.setRequestMethod()什么都不做

时间:2012-03-02 05:02:11

标签: java http post soundcloud

我绝对会把头发撕成这个。

我正在尝试用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身份验证,基本上我想到的每一种方式都是完全失败的......也许有人有更好的解决方案吗?

1 个答案:

答案 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