将curl请求转换为URLConnection

时间:2015-04-25 01:50:40

标签: java http curl put

我有cURL次请求:

curl -H 'Accept: application/vnd.twitchtv.v3+json' -H 'Authorization: OAuth <access_token>' \
-X PUT https://api.twitch.tv/kraken/users/<bot_name>/follows/channels/<channel_name>

我需要将其转换为Java URLConnection请求。这就是我到目前为止所做的:

String url = "https://api.twitch.tv/kraken/?oauth_token=" + bot.botOAuth.substring("oauth:".length());

URL obj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);

conn.setRequestMethod("PUT");

OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write("https://api.twitch.tv/kraken/users/" + bot.botName + "/follows/channels/" + gamrCorpsTextField.getText());
out.close();

new InputStreamReader(conn.getInputStream());

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您准备在此代码中打开的网址:

String url = "https://api.twitch.tv/kraken/?oauth_token=" + bot.botOAuth.substring("oauth:".length());

与您的curl请求网址不匹配:

https://api.twitch.tv/kraken/users/<bot_name>/follows/channels/<channel_name>

你似乎想要更像这样的东西:

URL requestUrl = new URL("https://api.twitch.tv/kraken/users/" + bot.botName
        + "/follows/channels/" + gamrCorpsTextField.getText());
HttpURLConnection connection = (HttpUrlConnection) requestUrl.openConnection();

connection.setRequestMethod("PUT");
connection.setRequestProperty("Accept", "application/vnd.twitchtv.v3+json");
connection.setRequestProperty("Authorization", "OAuth <access_token>");
connection.setDoInput(true);
connection.setDoOutput(false);

设置&#34; URLConnection请求&#34;相当于curl命令将按要求发出的命令。从那里,您可以通过connection对象获得响应代码,读取响应标头和正文等。