Инструмент HTTP-запроса Java

HTTP

Инструмент запроса отдыха Java

1. Добавьте зависимости

<dependency>
    <groupId>cn.gjing</groupId>
    <artifactId>tools-httpclient</artifactId>
    <version>1.2.6</version>
</dependency>

2. Инструкция по применению

返回值类型最好与目标方法一致, иначе может возникнуть исключение преобразования, лучше всего использовать, когда тип возвращаемого значения не подтвержденStringполучать. После завершения запроса это можно сделать черезget()Метод получает возвращаемый контент, или вы можете передатьlistener()Метод указывает слушателю отслеживать логику обработки после возврата результата.

1. Нет запроса параметров

public class Test{
    public static void main(String[] args) {
        String result = HttpClient.builder("http://127.0.0.1:8080/test", HttpMethod.GET, String.class)
                        .execute()
                        .get();
        System.out.println(result);
    }
}

2. Запрос с заголовком запроса

public class Test{
    public static void main(String[] args) {
            Map<String, String> map = new HashMap<>(16);
            map.put("head", "111");
            HttpClient.builder("http://127.0.0.1:8080/test6", HttpMethod.GET, String.class)
                    .header(map)
                    .execute()
                    .listener(System.out::println);
    }
}

3. Параметры переноса

public class Test{
    public static void main(String[] args) {
        Map<String, Object> param = new HashMap<>();
        param.put("id","1");
        HttpClient.builder("http://127.0.0.1:8080/test6", HttpMethod.GET, String.class)
                .param(param)
                .execute()
                .listener(System.out::println);
    }
}

4. Несите JSON

Это может быть строка JSON, карта, соответствующий объект объекта JSON, вот демонстрация прохождения через карту

public class Test{
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("key", "code");
        map.put("val", "200");
        Map resultMap = HttpClient.builder("http://127.0.0.1:8080/test6", HttpMethod.POST, Map.class)
                .body(map)
                .execute()
                .get();
    }
}

5. Установите время ожидания

Тайм-аут чтения можно установить отдельно (默认5000ms) и время ожидания соединения (默认2000ms)

public class Test{
    public static void main(String[] args) {
        Map<String, Object> param = new HashMap<>();
        param.put("id","1");
        HttpClient.builder("http://127.0.0.1:8080/test6", HttpMethod.GET, String.class)
                .param(param)
                //读超时时间
                .readTimeout(5000)
                //连接超时时间
                .connectTimeout(2000)
                .execute()
                .listener(System.out::println);
    }
}

6. Ненормальный запасной вариант

Как только в запросе будет ошибка, он войдет в запасной вариант и будет выброшен по умолчанию.HttpException, вы можете определить свою собственную резервную логику, этот метод необходимо выполнитьexecute()Вызывается перед методом запроса, в противном случае недействителен. Этот метод уведомит вас о сообщении об ошибке

public class Test{
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("key", "code");
        map.put("val", "200");
        Map resultMap = HttpClient.builder("http://127.0.0.1:8080/test6", HttpMethod.POST, Map.class)
                .body(map)
                .fallback(e -> {
                   throw new ServiceException("哎。回退把");
                })
                .execute()
                .get();
    }
}

3. Класс инструментов UrlUtils

1. объединение URL-адресов

Объединение URL, возвращаемый формат результата выглядит следующим образом:http://xxx/param1/param2

    public static void main(String[] args) {
        String url = "http://127.0.0.1:8080/";
        Object[] param = {1, 2, 3, 4};
        UrlUtil.urlAppend(url, param);
    }

2. Сортировка параметров

Параметры сортируются в соответствии с кодом Unicode имени поля от меньшего к большему (лексикографический порядок), и формат результата следующий: a=parameter1&b=parameter2

    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<>(16);
        map.put("a", "参数1");
        map.put("b", "参数2");
        UrlUtil.paramUnicodeSort(map, false, false);
    }

Параметр Описание

параметр описывать
paramMap параметр
urlEncode Следует ли кодировать URL
keyToLower Должно ли ключевое значение преобразованного параметра быть преобразовано в нижний регистр

3, параметр URL для сопоставления

Преобразование параметров после URL-адреса в карту

    public static void main(String[] args) {
        String url = "http://127.0.0.1:8080?a=2&b=2";
        UrlUtil.toMap(url);
    }

Исходный код проекта можно посмотреть на GitHUb:tools-httpclient