这是我的代码:
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();
我在回复中看到的内容:
500服务器错误
我打开我的httpCon
var,以及我看到的内容:
POST / rest / platform / domain / list HTTP / 1.1
为什么即使我使用httpCon.setRequestMethod("GET");
将其设置为GET,它也会设置为POST?
答案 0 :(得分:62)
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());
无关,Authorization
标头值的密码部分似乎没有正确地进行Base64编码。也许它是乱码的,因为它是示例性的,但即使它不是我修复你的Base64编码方法。