对 UrlConnection 的纯 HTTP 请求 (Java)
Plain HTTP Request to UrlConnection (Java)
从请求流发出请求
我有一个 OutputStream
包含以下 Request
。它是动态的,一切(Method
、Type
、Data
[Multipart/Non-Multipart/File])都可以改变。我只想要 来自该请求的响应流 。
POST /page.php HTTP/1.1
Host: example.com
User-Agent: Mozilla(Webkit)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Disposition: form-data; name="a" 1
--myboundary
Content-Disposition: form-data; name="b" 2
--myboundary--
手动构建 UrlConnection 很难
我知道我可以手工制作 UrlConnection
但这似乎很难。要创建它,我需要添加 headers
、data-values
,我需要通过 RegEx
操作获得。我不知道如何通过 RegEx
.
获取多部分数据
所以,这种方法会很难,而且请求并不总是只包含 String
,因为有时 它也会发送 Files
。另外,我对Http
格式了解不多,也没有信心。
所以,我正在寻找一个库或方法或简单的方法来从 Stream
上面制作 Request
并获得 Response Stream
。
非常简单:发送带有这些值的请求 (OutputStream) 并在 InputStream 中获得响应。
我们可以发送 Request
并使用 Socket
获得 Response
。
我们可以创建一个新的 Socket
并将其与主机和端口连接。在 OutputStream 中我们可以输入普通请求。我们可以通过 Socket.getInputStream()
.
得到 Response
请求:Socket.getOutputStream()
响应:Socket.getInputStream()
但是,我们必须使用 Socket.connect()
连接到 Server
。
Socket sock = new Socket();
sock.connect(host, port);
DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
dos.write(reqStr.getBytes());
dos.flush();
dos.close();
DataInputStream dis = new DataInputStream(sock.getInputStream());
//Here dis is the response.
从请求流发出请求
我有一个 OutputStream
包含以下 Request
。它是动态的,一切(Method
、Type
、Data
[Multipart/Non-Multipart/File])都可以改变。我只想要 来自该请求的响应流 。
POST /page.php HTTP/1.1
Host: example.com
User-Agent: Mozilla(Webkit)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Disposition: form-data; name="a" 1
--myboundary
Content-Disposition: form-data; name="b" 2
--myboundary--
手动构建 UrlConnection 很难
我知道我可以手工制作 UrlConnection
但这似乎很难。要创建它,我需要添加 headers
、data-values
,我需要通过 RegEx
操作获得。我不知道如何通过 RegEx
.
所以,这种方法会很难,而且请求并不总是只包含 String
,因为有时 它也会发送 Files
。另外,我对Http
格式了解不多,也没有信心。
所以,我正在寻找一个库或方法或简单的方法来从 Stream
上面制作 Request
并获得 Response Stream
。
非常简单:发送带有这些值的请求 (OutputStream) 并在 InputStream 中获得响应。
我们可以发送 Request
并使用 Socket
获得 Response
。
我们可以创建一个新的 Socket
并将其与主机和端口连接。在 OutputStream 中我们可以输入普通请求。我们可以通过 Socket.getInputStream()
.
Response
请求:Socket.getOutputStream()
响应:Socket.getInputStream()
但是,我们必须使用 Socket.connect()
连接到 Server
。
Socket sock = new Socket();
sock.connect(host, port);
DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
dos.write(reqStr.getBytes());
dos.flush();
dos.close();
DataInputStream dis = new DataInputStream(sock.getInputStream());
//Here dis is the response.