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

Java.setRequestMethod()中的HTTP POST请求不执行任何操作,java,http,post,soundcloud,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);

我为这件事真是大发雷霆

我试图用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身份验证,基本上我想到的每一种方法都是彻底失败的。。。也许有人有更好的解决方案?

您尝试过使用SoundCloud的Java SDK吗

这将从代码中删除大部分HTTP/OAuth2


但是,即使您想要更多地控制您正在做的事情,通常最好使用一个合适的HTTP客户机库,比如Apache,而不是试图对抗非常基本的JavaSE支持。查看:

可能重复的,你可以在这里看到一个帖子示例:这两个都不能回答我的问题。。。我在做什么呢???我已经尝试将其显式设置为“POST”方法,但仍然不起作用。请使用HTTPClient库。这大大简化了你要做的事情。是的,我检查了包装,我只是想看看我是否可以自己做oauth的东西。不管怎样,我可能现在就要走那条路了,因为我正试图尽快完成这件事。知道为什么setRequestMethod(“POST”)不起作用吗?这看起来很简单,但它不起作用。。。令人沮丧>:(