Вопрос-ответ

How to send HTTP request in Java?

Как отправить HTTP-запрос на Java?

В Java как составить сообщение с HTTP-запросом и отправить его на HTTP-веб-сервер?

Переведено автоматически
Ответ 1

Вы можете использовать java.net.HttpURLConnection.

Пример (отсюда) с улучшениями. Включен на случай потери ссылки.:

public static String executePost(String targetURL, String urlParameters) {
HttpURLConnection connection = null;

try {
//Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");

connection.setRequestProperty("Content-Length",
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");

connection.setUseCaches(false);
connection.setDoOutput(true);

//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.close();

//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
Ответ 2

Из руководства Oracle по Java

import java.net.*;
import java.io.*;

public class URLConnectionReader {
public static void main(String[] args) throws Exception {
URL yahoo = new URL("http://www.yahoo.com/");
URLConnection yc = yahoo.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;

while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
Ответ 3

Я знаю, что другие порекомендуют http-клиент Apache, но это добавляет сложности (т. Е. Больше вещей, которые могут пойти не так), что редко оправдано. Для простой задачи java.net.URL подойдет.

URL url = new URL("http://www.y.com/url");
InputStream is = url.openStream();
try {
/* Now read the retrieved document from the stream. */
...
} finally {
is.close();
}
Ответ 4

Apache HttpContents. Примеры для двух модулей - HttpCore и HttpClient помогут вам сразу же приступить к работе.

Не то чтобы HttpURLConnection был плохим выбором, HttpComponents избавит от многих утомительных программ. Я бы рекомендовал это, если вы действительно хотите поддерживать множество HTTP-серверов / клиентов с минимальным количеством кода. Кстати, HttpCore можно использовать для приложений (клиентов или серверов) с минимальной функциональностью, тогда как HttpClient следует использовать для клиентов, которым требуется поддержка нескольких схем аутентификации, поддержка файлов cookie и т.д.

java