我正在努力使用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或注释掉。相反,它用于POST,PATCH,PUT等......(需要正文的请求)。
另请注意:
urlConnection.setRequestMethod("GET");
如果发送GET请求,则不需要特别声明(尽管我在代码中留下了可读性)
我怀疑如果你包含setDoOutput(true)并且没有指定请求方法,该方法将默认为POST请求。