На основе Apache HttpClient 4.3.x
Возможности:
— Поддержка многопоточных асинхронных запросов. — Добавление запроса в пул соединений. — Унифицированные настройки параметров. — Конвейерный API-дизайн. — Двусторонняя аутентификация. — Возможность повторного чтения ответа. — Простая обработка результатов ответа (запись файла, запись потока, преобразование в JSON-объект, строку или массив байтов). — Загрузка и скачивание файлов. — Обработка перенаправленных путей, сетевых прокси. — Простое сохранение сеанса. — Простые функции аутентификации. — Простой механизм повторных попыток при сбое. — Предоставление пользовательских перехватчиков.
String url = "https://baidu.com";
// Получение HTML-страницы
String html = HttpKit.get(url).execute().getString();
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");
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();
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();
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");
// Адрес 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);
String url ="https://my.oschina.net";
String html = HttpKit.get(url).setProxy("192.168.10.10", 1182).execute().getString();
System.out.println(html);
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);
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");
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 )