Простой HTTP-запрос к UrlConnection (Java) - PullRequest
2 голосов
/ 01 апреля 2020

Сделать запрос из потока запросов

У меня OutputStream содержит ниже Request. Это динамика c, и все (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 и не уверен.

Итак, Я ищу библиотеку или метод или простой способ сделать Request из выше Stream и получить Response Stream.

Очень просто: Отправка запроса с этими значениями (OutputStream) и получение ответа в InputStream.

1 Ответ

0 голосов
/ 06 апреля 2020

Мы можем отправить Request и получить Response, используя Socket.

Мы можем создать новый Socket и связать его с хостом и портом. В OutputStream мы можем ввести простой запрос . Мы можем получить Response по Socket.getInputStream().

Запрос : Socket.getOutputStream() Ответ : Socket.getInputStream()

Но нам нужно будет подключиться к серверу с помощью Socket.connect().

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.
...