HTTP POST-запрос в Java .setRequestMethod () ничего не делает - PullRequest
0 голосов
/ 02 марта 2012

Я просто рву на себе волосы.

Я пытаюсь сделать HTTP-запрос POST в Java, но он продолжает отправлять его как 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, и практически все, о чем я думал, это полный провал ... Может, у кого-то есть лучшее решение для этого?

1 Ответ

1 голос
/ 02 марта 2012

Вы пытались использовать 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

...