即使httpCon.setRequestMethod("GET"),HttpURLConnection也会发送POST请求; 已设定

Les*_*ova 28 java http urlconnection

这是我的代码:

String addr = "http://172.26.41.18:8080/domain/list";

URL url = new URL(addr);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setDoInput(true);
httpCon.setUseCaches(false);
httpCon.setAllowUserInteraction(false);
httpCon.setRequestMethod("GET");
httpCon.addRequestProperty("Authorization", "Basic YWRtaW4fYFgjkl5463");

httpCon.connect();

OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());

System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());

out.close();
Run Code Online (Sandbox Code Playgroud)

我在回应中看到了什么:

500服务器错误

我打开我的httpConvar,以及我看到的内容:

POST/rest/platform/domain/list HTTP/1.1

为什么它设置为POST,即使我已经习惯httpCon.setRequestMethod("GET");将其设置为GET?

Bal*_*usC 63

httpCon.setDoOutput(true);隐式设置请求方法为POST,因为这是默认的方法,每当你想发送一个请求主体.

如果要使用GET,请删除该行并删除该OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());行.您无需为GET请求发送请求正文.

以下应该用于简单的GET请求:

String addr = "http://172.26.41.18:8080/domain/list";
URL url = new URL(addr);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setUseCaches(false);
httpCon.setAllowUserInteraction(false);
httpCon.addRequestProperty("Authorization", "Basic YWRtaW4fYFgjkl5463");
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
Run Code Online (Sandbox Code Playgroud)

也可以看看:


具体问题无关,Authorization标头值的密码部分似乎没有正确地进行Base64编码.也许它是乱码的,因为它是示例性的,但即使它不是我修复你的Base64编码方法.