java httpurlconnection post пример

Учимся программировать на Java с нуля

В Java предоставляется подкласс HttpURLConnection, производный от класса URLConnection и поддерживающий соединения по сетевому протоколу НТТР. Чтобы получить объект класса HttpURLConnection, следует вызвать метод openConnection() для объекта типа URL, как описано в данной статье, но результат нужно привести к типу HttpURLConnection.

Разумеется , при этом необходимо убедиться, что соединение по протоколу HTTP действительно установлено. Получив ссылку HttpURLConnection , можно вызвать любые методы, унаследованные от класса URLConnection, а также любые методы, определенные в самом классе HttpURLConnection.

Некоторые методы из этого класса перечислены ниже:

static boolean getFollowRedirects() — возвращает логическое значение true, если автома­тически следует переадресация, а иначе — логическое значение false.

String getRequestMethod() — возвращает строковое представление метода, которым выполняется запрос по URL. По умолчанию запрос выполняется методом GET. Доступны и другие методы, в том числе и POST.

int getResponseCode() throws IOException — возвращает код ответа по протоколу НТТР. Если код ответа не может быть получен, возвращается значе­ние — 1. При разрыве соединения генерируется исклю­чение типа IОЕхсерtiоn.

String getResponseMessage() throws IOException — возвращает ответное сообщение, связанное с кодом ответа. Если ответное сообщение отсутствует, то воз­вращает пустое значение null.

static void setFollowRadirects(boolean способ) — если параметр способ принимает логическое значение true, то переадресация выполняется автоматически. Если же он принимает логическое значение false, то переадресация не происходит. По умолчанию пере­адресация выполняется автоматически.

void setRequestмethod(String способ) throws ProtocolZxception — задает метод, которым делаются запросы по прото­колу HTTP, в соответствии со значением параметра способ. По умолчанию принят метод GET, но доступны и другие методы, в том числе POST. Если в качестве параметра способ указано неправильное значение, то генерируется исключение типа ProtocolExoeption.

В приведенном ниже примере программы демонстрируется применение класса HttpURLConnection. Сначала в этой программе устанавливается соединение с веб-сайтом pro-java.ru, а затем выводится метод запроса, код ответа и ответное сообщение. И наконец, выводятся ключи и значения из заголовка ответа.

Ниже приведен результат, выводимый данной программой ( разумеется, точный ответ, возвращаемый сайтом pro-java.ru, будет меняться с течением времени).

Обратите внимание на порядок вывода ключей и значений из заголовка. Сначала вызывается метод getHeaderFields() , унаследованный от класса URLConnection, чтобы получить отображение ключей и значений из заголовка. Затем для этого отображения вызывается метод keySet(), чтобы извлечь мно­жество ключей из заголовка. Далее полученное множество ключей перебирается в цикле for в стиле for each, где вызывается также метод get(), чтобы получить значение, связанное с каждым ключом.

Как послать POST запрос на сервер при помощи класса HttpURLConnection ? С GET запросами все более менее понятно. Хотелось бы увидеть пример кода отправки GET запроса на сервер при помощи HttpURLConnection .

Допустим у меня есть переменная editTextLogin = «Vasya» и editTextPassword = «123»

Каким образом я могу послать их на сервер?

1 ответ 1

Пример создания post запроса:

Пример взять с этого ресурса, перейдя по ссылке вы можете найти больше примеров.

Retrofit это библиотека, которая позволяет удобно работать с запросами. Идея простым языком: Retrofit строит URL с помощью описанного метода в интерфейсе и делает запрос используя OkHttp. Немного истории о OkHTTP и HttpURLConnection — можно прочитать здесь. (статья является доп. материалом, а не частью основного ответа на вопрос).

HttpURLConnection class from java.net package can be used to send Java HTTP Request programmatically. Today we will learn how to use HttpURLConnection in java program to send GET and POST requests and then print the response.

Table of Contents

Java HTTP Request

For our HttpURLConnection example, I am using sample project from Spring MVC Tutorial because it has URLs for GET and POST HTTP methods. Below are the images for this web application, I have deployed it on my localhost tomcat server.

Java HTTP GET Request

Java HTTP GET Request for Login Page

Java HTTP POST Request

For Java HTTP GET requests, we have all the information in the browser URL itself. So from the above images, we know that we have the following GET request URLs.

Above URL’s don’t have any parameters but as we know that in HTTP GET requests parameters are part of URL itself, so for example if we have to send a parameter named userName with value as Pankaj then the URLs would have been like below.

  • http://localhost:9090/SpringMVCExample?userName=Pankaj
  • http://localhost:9090/SpringMVCExample/login?userName=Pankaj&pwd=apple123 – for multiple params

If we know the POST URL and what parameters it’s expecting, it’s awesome but in this case, we will figure it out from the login form source.

Below is the HTML code we get when we view the source of the login page in any of the browsers.

Look at the form method in the source, as expected it’s POST method. Now see that action is “home”, so the POST URL would be http://localhost:9090/SpringMVCExample/home. Now check the different elements in the form, from the above form we can deduce that we need to send one POST parameter with name userName and it’s of type String.

So now we have complete details of the GET and POST requests and we can proceed for the Java HTTP Request example program.

Below are the steps we need to follow for sending Java HTTP requests using HttpURLConnection class.

  1. Create URL object from the GET/POST URL String.
  2. Call openConnection() method on URL object that returns instance of HttpURLConnection
  3. Set the request method in HttpURLConnection instance, default value is GET.
  4. Call setRequestProperty() method on HttpURLConnection instance to set request header values, such as “User-Agent” and “Accept-Language” etc.
  5. We can call getResponseCode() to get the response HTTP code. This way we know if the request was processed successfully or there was any HTTP error message thrown.
  6. For GET, we can simply use Reader and InputStream to read the response and process it accordingly.
  7. For POST, before we read response we need to get the OutputStream from HttpURLConnection instance and write POST parameters into it.

HttpURLConnection Example

Based on the above steps, below is the example program showing usage of HttpURLConnection to send Java GET and POST requests.

When we execute the above program, we get below response.

Just compare it with the browser HTTP response and you will see that it’s same. You can also save response into any HTML file and open it to compare the responses visually.

Quick Tip: If you have to send GET/POST requests over HTTPS protocol, then all you need is to use javax.net.ssl.HttpsURLConnection instead of java.net.HttpURLConnection . Rest all the steps will be same as above, HttpsURLConnection will take care of SSL handshake and encryption.

Count the Number of Triangles in Given Picture — Programmatic Solution

Оцените статью