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

Java HttpURLConnection发送POST请求,即使httpCon.setRequestMethod(";GET";);设定,java,http,urlconnection,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.se

这是我的密码:

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”),它也被设置为POST
将其设置为获取httpCon.setDoOutput(真)隐式地将请求方法设置为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());
另见:


与具体问题无关,您的
授权
头值的密码部分似乎没有正确进行Base64编码。可能是因为它是示例性的,所以被置乱了,但即使不是,我也会修复您的Base64编码方法。

基本身份验证是否通过POST通过线路传输?您是否在Galaxy Nexus上测试<代码>httpCon.setDoOutput(真)在我的Galaxy Nexus上强制发布,但在运行Gingerbread.AFAIK的Galaxy S2上不强制发布,其余的不强制要求没有请求主体,可能有合法的请求主体。@mirage:这不是REST指定的,将被忽略。只有实现不好的服务器/API可能需要它。这是绝对不能依赖的。但这是否意味着这是被禁止的?我的意思是,HttpURLConnection似乎禁止在body中使用GET,但这是非标准的吗?有许多库允许它使用。@BalusC在Java源代码中找不到任何证据证明
httpCon.setDoOutput(true)设置要发布的方法。@ArtemNovikov: