【发布时间】:2017-02-23 11:27:22
【问题描述】:
我有一个 Java 程序试图通过套接字发出 HTTP 请求。出于某种原因,字符串中的斜线搞砸了。
我有一个 try/catch,一旦使用带有斜杠的字符串创建套接字,它就会被捕获。
Socket socket = new Socket("www.google.ca", port);
回应
HTTP/1.1 400 Bad Request
Content-Length: 54
Content-Type: text/html; charset=UTF-8
Date: Fri, 14 Oct 2016 06:05:43 GMT
Connection: close
<html><title>Error 400 (Bad Request)!!1</title></html>
现在用斜线
Socket socket = new Socket("www.google.ca/", port);
被抓住了。
我的请求。
outputStream.println("GET / HTTP/1.1");
outputStream.println("");
outputStream.flush();
我正在尝试使用带有斜杠的主机名和路径访问特定站点。发生了什么?
【问题讨论】:
-
因为
www.google.ca/不是有效的主机名。 url 的路径应该位于GET部分。阅读有关 HTTP 协议的信息。如果你想连接到http://host/path,你应该打开一个到host的TCP套接字,然后使用GET /path等。