对 UrlConnection 的纯 HTTP 请求 (Java)

Plain HTTP Request to UrlConnection (Java)

从请求流发出请求

我有一个 OutputStream 包含以下 Request。它是动态的,一切(MethodTypeData[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 但这似乎很难。要创建它,我需要添加 headersdata-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.