Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache HttpClient & Servlet / 12 сообщений из 12, страница 1 из 1
18.11.2014, 14:22
    #38809568
Tom Hardy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Здравствуйте, возникла необходимость вызова сервлета, в котором Get метод.
Сказали взять Apache HttpClient и сделать запрос будто он приходит извне.

Подскажите пож как его использовать для этого? Нашел сайт с примерами, не понял какой из них мне тут необходим)
http://jexp.ru/index.php/Java/Apache_Common/Http_Client#Http_methods

Спасибо!
...
Рейтинг: 0 / 0
18.11.2014, 14:28
    #38809584
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Tom Hardy,
для теста? А то, есть плагин к фоксу - удобный
...
Рейтинг: 0 / 0
18.11.2014, 14:31
    #38809588
Tom Hardy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Petro123,

Да, необходимо именно через HttpClient)
...
Рейтинг: 0 / 0
18.11.2014, 14:52
    #38809630
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Tom Hardy...в котором Get метод...
...не понял какой из них мне тут необходим)...

Это может показаться невероятным. Но необходим тот в котором про GetMethod.
...
Рейтинг: 0 / 0
18.11.2014, 15:27
    #38809700
Tom Hardy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Blazkowicz,

Там почти все с GetMethod))

У меня есть сервлет ReadService, который вытаскивает документ из БД и отображает в браузере.
Если необходимо вытащить несколько сразу - то как это реализовать с помощью HttpClient?

Код: java
1.
2.
3.
4.
5.
HttpClient httpClient = new HttpClient();
GetMethod method = new GetMethod("localhost:8080/AddService");
for (int k = 0; k < 100; k++) {
            ReadService.doGet(req, resp);
        }



Как-то так?
...
Рейтинг: 0 / 0
18.11.2014, 16:43
    #38809838
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Tom HardyBlazkowicz,

Там почти все с GetMethod))

У меня есть сервлет ReadService, который вытаскивает документ из БД и отображает в браузере.
Если необходимо вытащить несколько сразу - то как это реализовать с помощью HttpClient?

Код: java
1.
2.
3.
4.
5.
HttpClient httpClient = new HttpClient();
GetMethod method = new GetMethod("localhost:8080/AddService");
for (int k = 0; k < 100; k++) {
            ReadService.doGet(req, resp);
        }



Как-то так?

сервлет ничего не отображает в браузере он лишь отдает то что запросил браузер.
Браузер запросил что то у сервера а сервер определил по урлу какой сервлет обработает запрос и вызвал соотвествующий метод этого сервлета.
Определитесь какие запросы ReadService обрабатывает post или get. Выберите соотвествующий способ создания запроса, напихайте туда необходимых параметров если таковые нужны для работы сервлета.
Сделате запрос.

HttpClient ключевое слово клиент. Клиент может быть не только в другой jvm но и другой машине и не знает о существовании сервелета ReadService.
ReadService сервлет находится на сервере.


Смотрите API
...
Рейтинг: 0 / 0
18.11.2014, 16:47
    #38809851
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
http://hc.apache.org/httpclient-3.x/tutorial.html
Коротко
Инстанцируем экземпляр HttpClient
HttpClient client = new HttpClient();

Создаем метод

HttpMethod method = new GetMethod(" http://www.apache.org/");
Выполняем метод
client.executeMethod(method);

Внезапно по ссылке даже код примера есть как и что делать включая обработку ошибки
...
Рейтинг: 0 / 0
18.11.2014, 17:25
    #38809901
Tom Hardy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
lleming,

Спасибо, теперь намного яснее стало)

Создал метод HttpMethod method = new GetMethod("localhost:8080/ReadService");
А как сделать так, чтобы метод сервлета выполнялся n-ое количество раз?
Здесь же в цикл не закинешь.
...
Рейтинг: 0 / 0
18.11.2014, 17:29
    #38809904
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Tom HardyЗдесь же в цикл не закинешь.
Почему?
...
Рейтинг: 0 / 0
18.11.2014, 17:43
    #38809933
Tom Hardy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Blazkowicz,

Вот так же не будет работать:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class HttpClientService {

    private static String url = "localhost:8080/ReadService";

    public static void main(String[] args) {

        for (int k = 0; k < 100; k++) {          
            HttpClient client = new HttpClient();         
            GetMethod method = new GetMethod(url);            
            method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                    new DefaultHttpMethodRetryHandler(3, false));
            try {
                // Execute the method.
                int statusCode = client.executeMethod(method);
                if (statusCode != HttpStatus.SC_OK) {
                    System.err.println("Method failed: " + method.getStatusLine());
                }    
                } catch ...//exceptions                
                method.releaseConnection();
            }
        }
    }
}



И еще один момент последний не пойму, вписывая в браузер localhost:8080/ReadService - у меня выходил на экране 1 документ.
По идеи, с таким HttpClient'ом теперь после этого будет 100 выходить? А 1 теперь нельзя вывести не меняя код?
Объясните пожалуйста этот момент.
...
Рейтинг: 0 / 0
19.11.2014, 10:21
    #38810394
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Вам бы разобрать что такое http и как сношаются клиент (браузер) и сервер.

Браузер получает документ и отображает его на экране.
Браузер это своего рода интерфейс для того же http клиента.


HttpClient после выполения метода executeMethod запихает данные полученные запросом в GetMethod. Т.е. в итого вы получете в цикле 100 объектов GetMethod в каждом из которых будут храниться результаты запросов сам документ и хеадеры.

Вы пример смотрели?
Там же есть как получить сам документ после выполнения запроса.
...
Рейтинг: 0 / 0
19.11.2014, 10:23
    #38810399
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Apache HttpClient & Servlet
Код: java
1.
2.
 // Read the response body.  ---Получить тело документа полученное запросом 
byte[] responseBody = method.getResponseBody();
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache HttpClient & Servlet / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]