Discuss / Java / 设置http的请求头会报错:restricted header name: "Host"

设置http的请求头会报错:restricted header name: "Host"

Topic source
java:57	 String postUrl = "https://reportedh5.17wanxiao.com/sass/api/epmpics";
java:58	 HttpRequest request = HttpRequest.newBuilder(new URI(postUrl)).headers(
		 	"Host", "reportedh5.17wanxiao.com",
		 	"Connection", "keep-alive",
		 	"Content-Length", "1258",
		 	"Accept", "application/json, text/plain, */*",
		 	"User-Agent", "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.138 Mobile Safari/537.36 Wanxiao/5.3.1",
		 	"Content-Type", "application/json;charset=UTF-8",
		 	"Origin", "https://reportedh5.17wanxiao.com",
		 	"X-Requested-With", "com.newcapec.mobile.ncp",
		 	"Referer", "https://reportedh5.17wanxiao.com/health/index.html?templateid=pneumonia&businessType=epmpics&customerId=838&systemType=Android&UAinfo=wanxiao&versioncode=10531101&token=d47d4d52-6b01-4d92-a1a7-3adbb889d149",
		 	"Accept-Encoding", "gzip, deflate",
		 	"Accept-Language", "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
		 	"Cookie", ""
		 )
		 .POST(BodyPublishers.ofFile(Paths.get("/post_text.json")))
		 .build();

		 HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

即使我添加了启动参数-Djdk.httpclient.allowRestrictedHeaders=host

C:\software\jdk-14.0.2\bin\java.exe " com.itranswarp.learnjava.SendMail -Djdk.httpclient.allowRestrictedHeaders=host
DEBUG: setDebug: JavaMail version 1.6.2
Exception in thread "main" java.lang.IllegalArgumentException: restricted header name: "Host"
	at java.net.http/jdk.internal.net.http.common.Utils.newIAE(Utils.java:282)
	at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.checkNameAndValue(HttpRequestBuilderImpl.java:110)
	at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.header(HttpRequestBuilderImpl.java:126)
	at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.headers(HttpRequestBuilderImpl.java:140)
	at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.headers(HttpRequestBuilderImpl.java:43)
	at com.itranswarp.learnjava.SendMail.main(SendMail.java:58)

Process finished with exit code 1

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你为什么要自己设置Host?

看完老师的教程自己对自动健康打卡有了想法,就卡在这步了


  • 1

Reply