0

我绝对把我的头发扯掉了。

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

4

1 回答 1

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

于 2012-03-02T11:03:19.803 回答