Обновленный ответ:
Поскольку некоторые классы в первоначальном ответе устарели в новой версии HTTP-компонентов Apache, я публикую это обновление.
Кстати, вы можете получить доступ к полной документации для большего количества примеров здесь .
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.a-domain.com/foo/");
// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("param-1", "12345"));
params.add(new BasicNameValuePair("param-2", "Hello!"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
try (InputStream instream = entity.getContent()) {
// do something useful
}
}
Оригинальный ответ:
Я рекомендую использовать Apache HttpClient. это быстрее и проще в реализации.
HttpPost post = new HttpPost("http://jakarata.apache.org/");
NameValuePair[] data = {
new NameValuePair("user", "joe"),
new NameValuePair("password", "bloggs")
};
post.setRequestBody(data);
// execute method and handle any error responses.
...
InputStream in = post.getResponseBodyAsStream();
// handle response.
для получения дополнительной информации проверьте этот URL: http://hc.apache.org/
PostMethod
его, кажется, его теперь фактически называютHttpPost
согласно stackoverflow.com/a/9242394/1338936 - просто для любого, кто найдет этот ответ, как я :)Отправлять POST-запрос легко в ванильной Java. Начиная с a
URL
, нам нужно преобразовать его вURLConnection
использованиеurl.openConnection();
. После этого нам нужно привести его к aHttpURLConnection
, чтобы мы могли получить доступ к егоsetRequestMethod()
методу для установки нашего метода. Наконец, мы говорим, что собираемся отправлять данные через соединение.Затем нам нужно указать, что мы собираемся отправить:
Отправка простой формы
Обычный POST из формы http имеет четко определенный формат. Нам нужно преобразовать наши данные в этот формат:
Затем мы можем прикрепить содержимое нашей формы к http-запросу с соответствующими заголовками и отправить его.
Отправка JSON
Мы также можем отправить JSON с помощью Java, это также легко:
Помните, что разные серверы принимают разные типы контента для json, см. Этот вопрос.
Отправка файлов с помощью сообщения Java
Отправка файлов может считаться более сложной для обработки, поскольку формат является более сложным. Мы также собираемся добавить поддержку отправки файлов в виде строки, поскольку мы не хотим полностью буферизовать файл в памяти.
Для этого мы определим несколько вспомогательных методов:
Затем мы можем использовать эти методы для создания многочастного почтового запроса следующим образом:
источник
out.write(finishBoundaryBytes);
черта нужна?http.connect();
будет выполнять отправку POST, не так ли?requests.post('http://httpbin.org/post', data = {'key':'value'})
Python… Я новичок в Java, поэтому это очень странное использование слова «легко» для меня :)источник
encode(String)
устарела. Вы должны использоватьencode(String, String)
, который указывает тип кодировки. Пример:encode(rawData, "UTF-8")
.Первый ответ был отличным, но мне пришлось добавить try / catch, чтобы избежать ошибок компилятора Java.
Кроме того, мне было трудно понять, как читать
HttpResponse
библиотеки Java.Вот более полный код:
источник
e.printStackTrace()
ничего не обрабатывает.Простой способ использования Apache HTTP Components:
Взгляните на свободный API
источник
Простейший способ отправки параметров с помощью почтового запроса:
Ты сделал. Теперь вы можете использовать
responsePOST
. Получить содержимое ответа в виде строки:источник
Вызовите
HttpURLConnection.setRequestMethod("POST")
иHttpURLConnection.setDoOutput(true);
фактически только последний необходим, поскольку POST тогда становится методом по умолчанию.источник
Я рекомендую использовать http-запрос, основанный на apache http api.
источник