1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/m310851010-httpkit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

HttpKit — простой и быстрый HTTP-клиент

На основе Apache HttpClient 4.3.x

Возможности:

— Поддержка многопоточных асинхронных запросов. — Добавление запроса в пул соединений. — Унифицированные настройки параметров. — Конвейерный API-дизайн. — Двусторонняя аутентификация. — Возможность повторного чтения ответа. — Простая обработка результатов ответа (запись файла, запись потока, преобразование в JSON-объект, строку или массив байтов). — Загрузка и скачивание файлов. — Обработка перенаправленных путей, сетевых прокси. — Простое сохранение сеанса. — Простые функции аутентификации. — Простой механизм повторных попыток при сбое. — Предоставление пользовательских перехватчиков.

Примеры использования:

  1. Доступ к главной странице Baidu, автоматическая обработка односторонней HTTPS-аутентификации:
String url = "https://baidu.com";
// Получение HTML-страницы
String html = HttpKit.get(url).execute().getString();
  1. Запрос на поиск по ключевому слову «oschina» на Baidu и запись результата в файл:
String format = String.format("https://baidu.com/s?wd=%s&tn=98012088_5_dg&ch=11", "oschina");
HttpKit.get(format).execute().transferTo("d:/baiduSearchResult.html");
  1. Использование объекта в качестве параметра запроса, см. класс ObjectParamTest:
RequestBase request = HttpKit.post(url);

OscUserInfo info = new OscUserInfo();
info.setEmail("email");
info.setPwd("***");
info.setSave_login(1);

request.setParameter(info)
.addHeader("Origin", "https://www.oschina.net")
.setUserAgent(userAgent);

ResponseWrap response = request.execute();
  1. Загрузка файла:
FormPart form = FormPart.create()
// Добавление дополнительных параметров
.addParameter("age", 40)
//Добавление файла
.addParameter("fileName", new File("d:/test.txt"));
String result = HttpKit.post("http://www.test.com").useForm(form).execute().getString();
  1. Получение oschina-верификации и запись в файл:
String url = "https://www.oschina.net/action/user/captcha?t=0.1058898605559051";
String referer = "https://www.oschina.net/home/reg?goto_page=https%3A%2F%2Fwww.oschina.net%2F";
String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";

HttpKit.get(url)
.setUserAgent(userAgent)
.addHeader("Referer", referer)
.execute().transferTo("d:/img.png");
  1. Получение JSON от Baidu Baike и преобразование его в карту:
// Адрес Baidu Baike
String url = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=%s&bk_length=600";
Map<?, ?> map = HttpKit.get(String.format(url, "Java")).execute().getJson(Map.class);
System.out.println(map);
  1. Настройка сетевого прокси:
String url ="https://my.oschina.net";
String html = HttpKit.get(url).setProxy("192.168.10.10", 1182).execute().getString();
System.out.println(html);
  1. Комплексный пример: запрос на вход в систему www.oschina.net и получение UserId:
String url = "https://www.oschina.net/action/user/hash_login";
String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";

RequestBase request = HttpKit.post(url)
.addParameter("email", "xxxxxxx")
.addParameter("pwd", Sha1Util.getSha1("xxxxxxx"))
.addParameter("verifyCode", "")
.addParameter("save_login", 1)

.addHeader("Origin", "https://www.oschina.net")
.setUserAgent(userAgent);

ResponseWrap response = request.execute();

String resultString = response.getString();
if (resultString != null && resultString.trim().length() > 0) {
    Map<?, ?> json = response.getJson(Map.class);
    System.out.println("HttpKit登录失败===>" + json.get("msg"));
    return ;
}

System.out.println(response.getString());
System.out.println("登录成功===>" + response.getStatusLine());

// Перенаправление на страницу, сохранение сессии, просто передайте логин HttpKit в следующий запрос
String html = HttpKit.get("https://my.oschina.net/yiq", request)
.setUserAgent(userAgent)
.execute().getString();

String userStr = "owner_id\" data-value=\"";
int dataUserIndex = html.indexOf(userStr) + userStr.length();

// Извлечение UserId
String userId = html.substring(dataUserIndex, html.indexOf("\">", dataUserIndex));
System.out.println("Извлечение UserId===>" + userId);
  1. Скачивание файла: загрузка oschina-верификации:
HttpKit.get("https://www.oschina.net/action/user/captcha?t=0.1058898605559051")
.setUserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
.addHeader("Referer", "https://www.oschina.net/home/reg?goto_page=https%3A%2F%2Fwww.oschina.net%2F")
.execute().transferTo("d:/img.png");
  1. Многопоточный запрос к Baidu Cloud для проверки доступности домена:
String url = "https://cloud.baidu.com/api/bcd/search/status";
String Referer = ```
https://cloud.baidu.com/product/bcd/search.html?keyword=

String req = "{\"domainNames\":[{\"label\":\"%s\",\"tld\":\"com\"}]}";
String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36";

ExecutorService service = Executors.newScheduledThreadPool(30);

ResponseHandler<CheckDomainResult> resp = new ResponseHandler<CheckDomainResult>() {
    @Override
    public CheckDomainResult handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
        ResponseWrap responseWrap = new ResponseWrap(response);
        return responseWrap.getJson(CheckDomainResult.class);
    }
};

int count = 100;
RequestFuture<CheckDomainResult>[] futures = new RequestFuture[count];

try {

    for (int i = 0; i < count; i++) {
        String domainLabel = "aaa" + i;

        RequestBase request = HttpKit.post(url)
        .setParameter(String.format(req, domainLabel))
        .setContentType(ContentType.APPLICATION_JSON)
        .setHeader("Origin", "https://cloud.baidu.com")
        .setUserAgent(userAgent)
        .addHeader("Referer", Referer + domainLabel);

        RequestFuture<CheckDomainResult> future = request.executeCallback(service, resp);
        futures[i] = future;
    }

    //获取结果
    for (RequestFuture<CheckDomainResult> result : futures) {
        Accurate accurate = result.get().getResult().getAccurate()[0];
        System.out.println("域名:" + accurate.getDomainName() + " 状态:" +accurate.getStatus());
    }

} catch (Exception e) {
    e.printStackTrace();
} finally {
    service.shutdown();
}

Двусторонний запрос аутентификации

String string = HttpKit.post("https://wwwt.est.com")
.setJKS(new File("jksFile.jks"), "xxxx")
.execute().getString();

System.out.println(string);

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

HttpKit — это инструмент для HTTP-запросов, который поддерживает многопоточные асинхронные запросы. Он имеет унифицированные параметры настройки для запросов и пула соединений. У него API в виде пайплайна, и всё это имеет только один вход — HttpKit. Это очень просто! Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/m310851010-httpkit.git
git@api.gitlife.ru:oschina-mirror/m310851010-httpkit.git
oschina-mirror
m310851010-httpkit
m310851010-httpkit
master