我正努力使用httpurlconnection成功地发送带有授权头的get请求。返回错误代码400。
我成功地使用了okhttpclient,但请求不要使用任何依赖项。
这是我的代码:
public static String GETReqUserProfiles() throws IOException {
URL url = new URL(UrlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("Content-Type", "application/" + "json");
urlConnection.setRequestProperty("authorization", "Bearer " + MANAGEMENT_TOKEN);
urlConnection.connect();
if (urlConnection.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ urlConnection.getResponseCode());
}
String assembledOutput = "";
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
(urlConnection.getInputStream())));
String output;
System.out.println("Output from Server:\n");
while ((output = responseBuffer.readLine()) != null) {
System.out.println(output);
assembledOutput = assembledOutput + output;
}
urlConnection.disconnect();
return assembledOutput;
}
编辑:
一切正常-
问题在于:
urlConnection.setDoOutput(true);
setdooutput(true):声明发送带有请求的主体。get请求不需要主体,因此可以将其设置为false或注释掉。相反,这是用来张贴,修补,放置等…(需要一个机构的请求)。
另请注意:
urlConnection.setRequestMethod("GET");
如果发送get请求,则不需要特别声明(尽管我留在代码中是为了可读性)
我怀疑如果包含setdooutput(true)并且没有指定请求方法,那么该方法将默认为post请求。
最佳答案
我为此开发了一个图书馆,你可以用它。
https://github.com/kksingla/fetchjson
如果不想使用依赖项,可以在此处查看代码