java - HttpURLConnection 发送 POST 请求,即使 httpCon.setRequestMethod ("GET");已设置

标签 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();

我看到的回应:

500 Server error

我打开我的 httpCon 变量,然后我看到了:

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

为什么我用 httpCon.setRequestMethod("GET"); 设置为 GET 却设置为 POST?

最佳答案

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());

另见:


Unrelated 到具体问题,您的 Authorization header 值的密码部分似乎没有正确进行 Base64 编码。也许它被打乱了,因为它是示例性的,但即使不是,我也会修复你的 Base64 编码方法。

关于java - HttpURLConnection 发送 POST 请求,即使 httpCon.setRequestMethod ("GET");已设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760052/

相关文章:

java - 获取内存(RAM)上的 map 大小

java - 无法使用JDOM获取子标签内的内容

javascript - 无需 http 即可访问本地应用程序的 API(1 Heroku dyno 内)

使用从 URLConnection 读取的值的 Java If 语句不起作用

java - 如何正确将wsdl文件添加到java项目资源中并获取其路径

java - 使用 Java 中的 Jess

java - 在 Java 中访问内部类的包含类

http - sim800 at command post 数据到服务器

http - CORS 和 HTTP 基本身份验证

使用 ntlm 身份验证的 Java URLConnection 错误,但仅在 Linux 和 Java 7 上