java - Java 中的 HTTP POST 请求 .setRequestMethod() 不执行任何操作

标签 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) 应该自动使连接成为 POST;但是,当我调试代码时, protected 成员 conn.method 保持为 GET。

我还尝试将 url.openConnection() 转换为 HttpURLConnection 并在其上调用 .setRequestMethod("POST") ,这对 conn.method 完全没有任何改变。

作为奖励,我正在尝试进行 soundcloud 身份验证,基本上我想到的所有方法都彻底失败了......也许有人对此有更好的解决方案?

最佳答案

您是否尝试过使用 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

关于java - Java 中的 HTTP POST 请求 .setRequestMethod() 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528231/

相关文章:

java - JLabel的属性没有改变

Angular 4 应用程序,此请求的授权已被拒绝

java - 使用 Java org.apache.http.client 获取重定向 url

jquery - 如何使用 jquery/ajax 将数据发送到 json 文件

rest - werkzeug.exceptions.BadRequestKeyError : 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. KeyError: 'id'

java - 创建我自己的基于文本的数据存储

java - 如何从自定义组件捕获事件

angularjs - 通过工厂在 Angular 1.x 中发送 Post 请求

http - 如何在 Jolie 编程语言中获取服务的 http header

java - PhantomJS WebDriver headless : ".click" Method has no effect