JHttp
— это набор инструментов программирования для разработки клиентских приложений на Java, который обеспечивает эффективную и функциональную поддержку протокола HTTP. Он основан на нативном HttpUrlConnection
и поддерживает запросы GET
, POST
, PUT
, DELETE
, PATCH
, HEAD
, OPTIONS
, TRACE
.
Этот инструмент может адаптироваться к большинству бизнес-сценариев и предоставляет богатый API для операций запросов, что упрощает работу разработчиков с HTTP-запросами.
Использовать JHttp
можно двумя способами:
Если вы используете maven
для создания проекта, вы можете добавить координаты JHttp
в pom.xml
:
<!-- http://mvnrepository.com/artifact/com.jianggujin/JHttp -->
<dependency>
<groupId>com.jianggujin</groupId>
<artifactId>JHttp</artifactId>
<version>последняя версия</version>
</dependency>
Последнюю версию можно получить из Maven repository или с Code Cloud.
Самый простой способ использования — это загрузка исходного кода веб-страницы или обычный вызов интерфейса. Например, чтобы получить доступ к Baidu, можно написать следующий код:
JResponse response = new JTextResponse();
JRequest request = JRequest.create("https://www.baidu.com").response(response);
JRequestExecuter executer = new JDefaultRequestExecuter();
executer.execute(request);
System.out.println(response.getData());
Для одного сетевого запроса необходимы объект запроса, объект ответа и исполнитель запроса. В этом примере используется JTextResponse
, который обрабатывает текстовый ответ. Кроме того, JHttp
также предоставляет обработку ответов в виде массива байтов и файлов.
По умолчанию JRequest
использует метод GET
. Можно изменить метод запроса с помощью метода JRequest.method(JMethod method)
. JRequest
также предлагает некоторые общие методы, такие как время ожидания и кодировка символов.
Если вам не нужно создавать отдельный
JRequestExecuter
, вы можете использовать методexecute()
объектаJRequest
.
Обычно при сетевых запросах передаются параметры запроса. Для этого можно использовать метод data()
класса JRequest
, который имеет несколько перегруженных методов.
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather";
JRequest request = JRequest.create(url).method(JMethod.POST).response(new JTextResponse())
.data("theCityCode", "2009").data("theUserID", "");
JRequestExecuter executer = new JDefaultRequestExecuter();
executer.execute(request);
System.out.println(request.response().getData());
Иногда необходимо отправить не только обычные параметры, но и текст, например, данные в формате JSON для интерфейса Restful. С помощью JHttp
это можно сделать легко. Класс JRequest
имеет метод requestBody(Object body)
, который позволяет установить тело запроса. По умолчанию поддерживаются следующие типы данных: CharSequence
, Map
, byte[]
и char[]
.
Пример использования:
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather";
JRequest request = JRequest.create(url).method(JMethod.POST).response(new JTextResponse())
.requestBody("theCityCode=2009&theUserID=");
JRequestExecuter executer = new JDefaultRequestExecuter();
executer.execute(request);
System.out.println(request.response().getData());
Если стандартная реализация не соответствует вашим требованиям, вы можете создать собственный анализатор, реализовав интерфейс com.jianggujin.http.request.JRequestBodyResolver
и установив его с помощью метода requestBodyResolver(JRequestBodyResolver requestBodyResolver)
класса JRequest
. Этот способ является самым гибким, и если анализатор не установлен, исполнитель запроса попытается найти зарегистрированный анализатор. Анализаторы регистрируются вместе с исполнителем запроса, поэтому их можно получить через getRequestBodyResolverRegistrar()
.
Метод принимает два параметра: первый — анализатор тела запроса, второй — заменять ли существующий анализатор (если он есть). Если замена не производится, будет выброшено исключение. JHttp
предоставляет анализатор по умолчанию с именем default
, который поддерживает преобразование данных типов CharSequence
, Map
, ByteBuffer
, byte[]
и char[]
.
В классе JRequest
есть метод response(JResponse response)
, который устанавливает обработчик ответа. JHttp
предлагает следующие виды обработчиков:
JByteBufferResponse
— преобразует ответ в ByteBuffer
.JByteResponse
— возвращает ответ в виде массива байтов.JFileResponse
— обрабатывает ответ как файл.JJsonResponse
— преобразует ответ в формат JSON.JNoBodyResponse
— не имеет тела ответа.JTextResponse
— обрабатывает текст ответа.JXMLDomResponse
— анализирует ответ с использованием DOM.JXmlResponse
— анализирует XML-ответ.JXMLSaxResponse
— анализирует XML-ответ с использованием SAX.Обратите внимание на JJsonResponse
и JXmlResponse
, которые преобразуют данные ответа в указанный Java Bean. Однако они не предоставляют реализацию, и для этой цели необходимо реализовать соответствующие интерфейсы JJsonResolver
и JXmlResolver
. После этого можно вызвать соответствующий метод setResolver()
для расширения обработки по умолчанию.
Если стандартные обработчики не удовлетворяют вашим потребностям, вы можете реализовать интерфейс
JResponse
или напрямую наследовать отJAbstractResponse
.
Если среда выполнения программы ограничена сетью, необходимо настроить прокси для доступа. Это делается путём установки объекта прокси в запросе с помощью метода proxy(Proxy proxy)
.
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
JRequest.create(url).proxy(proxy );
Примечание: в тексте запроса присутствуют фрагменты кода на языке Java, однако в ответе они были опущены.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )