HttpURLConnection GET请求得到400错误请求

问题描述

| 我正在尝试使用HttpURLConnection在Java中使用某些参数进行GET请求。但是,每次执行此操作时,每次都会收到400:错误请求。 我需要更改使其工作吗?
String url = \"http://www.awebsite.com/apath?p1=v1&p2=v2&p3=v3\";
HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(false);
conn.setUseCaches(false);
conn.setRequestMethod(\"GET\");
conn.setRequestProperty(\"Host\",\"www.awebsite.com\");
conn.setRequestProperty(\"User-Agent\",\"Mozilla/4.0\");
conn.setRequestProperty(\"Accept\",\"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\");
conn.setRequestProperty(\"Accept-Language\",\"en-us,en;q=0.5\");
conn.setRequestProperty(\"Accept-Charset\",\"ISO-8859-1,utf-8;q=0.7,*;q=0.7\");
conn.setRequestProperty(\"Keep-Alive\",\"115\");
conn.setRequestProperty(\"Connection\",\"keep-alive\");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder data = new StringBuilder();
String s = \"\";
while((s = br.readLine()) != null)
    data.append(s);
String pageData = data.toString();
我试过了: 在整个查询(在?之后)和值上使用URLEncoder。 设置内容长度标题。 设置连接以使用输出,并将查询作为输出。     

解决方法

        该代码尝试打开与
www.awebsite.com
的连接,但它还会向Host字段
www.google.com
发送非法/无效值。 HTTP规范绝对不允许这样做。 您必须对此进行更正,以确保位于“ 1”的服务器接收到正确的头集,以便它可以处理您的请求。 强制链接:如何使用java.net.URLConnection触发和处理HTTP请求?     ,        似乎在这种情况下,HTTP 400并不是用来表示请求语法中的错误,而是表示如下所述的逻辑错误:HTTP 400(错误请求)用于逻辑错误,而不是格式错误的请求语法。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...