【问题标题】:HTTP POST Request in Java .setRequestMethod() Does NothingJava .setRequestMethod() 中的 HTTP POST 请求什么都不做
【发布时间】: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 身份验证,但基本上我想到的所有方法都完全失败了......也许有人对此有更好的解决方案?

【问题讨论】:

标签: java http post soundcloud


【解决方案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

【讨论】:

  • 是的,我检查了包装,我只是想看看我是否可以自己做 oauth 的事情。反正我现在可能只会走那条路,因为我正试图尽快完成这项工作。知道为什么 setRequestMethod("POST") 不起作用吗?这看起来很简单,但它不起作用......令人沮丧>:(
猜你喜欢
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2023-02-16
  • 2012-01-17
  • 1970-01-01
相关资源
最近更新 更多