Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как на java запустить сайт и обработать ответ. / 15 сообщений из 15, страница 1 из 1
14.02.2019, 07:20
    #39773663
artur1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Есть определенный сайт при входе на его страницу возвращается ответ в виде файла json.
Я пишу web приложение c использованием сервлетов.
Мое приложение находится по адресу HTTP://мое_приложение.
В приложение есть кнопка при нажатии на которую срабатывает переход на страницу мое_приложение/страница_запроса.
Переход на страницу запроса у меня слушает определенный сервлет.
Так вот нужно чтобы этот сервлет автоматом выполнил действия:
1) вход на определенный сайт - тот вернет в виде json. Например https://api.vk.com/method/friends.search
2) дальше сервлет должен вытащить данные из json и сформировать на их основе выводимую страницу.

У меня вопрос только по первому пункту: с помощью какого метода можно войти на сайт и получить от него сразу ответ?
...
Рейтинг: 0 / 0
14.02.2019, 11:39
    #39773760
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
artur1234,

URLConnection ?
...
Рейтинг: 0 / 0
15.02.2019, 01:09
    #39774179
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Такой код примерно.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.*;
import com.github.underscore.lodash.U;

public class HelloWorld extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setHeader("Content-Type", "text/javascript");
        resp.setHeader("Cache-Control", "no-cache, must-revalidate");
        resp.setHeader("Server", "Microsoft-IIS/10.0");
        resp.setCharacterEncoding("UTF-8");
        final String callback = req.getParameter("callback") == null ? "" : req.getParameter("callback");
        final String url = req.getParameter("url") == null ? "" : req.getParameter("url");
        StringBuilder builder = new StringBuilder();
        builder.append(callback).append("(\n");
        final Map<String, Object> json = new LinkedHashMap<>();
        json.put("server", "xml-json.herokuapp.com");
        json.put("remote_host", req.getRemoteAddr());
        json.put("url", url);
        final List<String> html = new ArrayList<>();
        try {
            U.FetchResponse response = U.fetch(url);
            if (response.getStatus() == 301) {
                response = U.fetch(response.getHeaderFields().get("Location").get(0));
            }
            if (response.getStatus() == 200) {
                html.add(response.text());
            } else {
                Map<String, Object> error = new LinkedHashMap<>();
                error.put("message", "Error " + response.getStatus() + " while loading url: " + url);
                html.add(url.endsWith("xml") ? U.toXml(error) : U.toJson(error));
            }
        } catch (Exception ex) {
            Map<String, Object> error = new LinkedHashMap<>();
            error.put("message", "Error " + ex.getMessage() + " while loading url: " + url);
            html.add(url.endsWith("xml") ? U.toXml(error) : U.toJson(error));
        }
        json.put("html", html);
        builder.append(U.toJson(json)).append("\n)");
        resp.setHeader("Content-Length", "" + builder.toString().getBytes().length);
        resp.getWriter().print(builder.toString());
    }

    public static void main(String[] args) throws Exception{
        Server server = new Server(Integer.valueOf(System.getenv("PORT")));
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        server.setHandler(context);
        context.addServlet(new ServletHolder(new HelloWorld()),"/*");
        server.start();
        server.join();   
    }
}




Хорошего Вам дня!
...
Рейтинг: 0 / 0
15.02.2019, 01:10
    #39774180
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
оо вот это код. аж прослезился. из музея скачали?
...
Рейтинг: 0 / 0
15.02.2019, 01:19
    #39774185
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
я тож не понял к чему он, адочек конечно. Понял, что давно не читал java-портянки, не жалею
...
Рейтинг: 0 / 0
15.02.2019, 01:30
    #39774187
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Валентин по привычке рекламирует свой Underscore.

А это - шутка йумора.
Код: java
1.
resp.setHeader("Server", "Microsoft-IIS/10.0");
...
Рейтинг: 0 / 0
15.02.2019, 11:04
    #39774293
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
забыл никя тож не понял к чему он, адочек конечно. Понял, что давно не читал java-портянки, не жалею
уточнение "понял что давно не читал java-портянки 19-тилетней давности".
...
Рейтинг: 0 / 0
15.02.2019, 11:05
    #39774294
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
нормальный на джаве код можно писать. просто юзать надо инструментарий не того возраста в котором домой из армии возвращаются.
...
Рейтинг: 0 / 0
15.02.2019, 11:07
    #39774298
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Есть у меня тайное подозрение что данное решение будет выглядеть лучше на Node.JS.

И компактнее. И безо всяких "библиотек|.
...
Рейтинг: 0 / 0
15.02.2019, 11:25
    #39774326
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
mayton,

а у меня есть подозрение, что на вопрос о Java можно было бы и не отвечать туманным намёком на знание вами какой-то фигни, не относящейся к Java.
...
Рейтинг: 0 / 0
15.02.2019, 11:28
    #39774330
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Valentin Kolesnikov,
Код: java
1.
2.
3.
resp.setHeader("Content-Type", "text/javascript");
resp.setHeader("Cache-Control", "no-cache, must-revalidate");
resp.setHeader("Server", "Microsoft-IIS/10.0");



Заголовок Content-Type должен быть "application/json".
Остальные заголовки в примере могут отличаться.
...
Рейтинг: 0 / 0
15.02.2019, 11:28
    #39774331
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
artur1234,

1. spring web
2 проверить, что подтянулся MappingJackson2HttpMessageConverter

Код: java
1.
2.
RestTemplate restTemplate = new RestTemplate();
R r =  restTemplate.getForEntity(<...>)
...
Рейтинг: 0 / 0
15.02.2019, 20:28
    #39774763
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
Partisan MValentin Kolesnikov,
Код: java
1.
2.
3.
resp.setHeader("Content-Type", "text/javascript");
resp.setHeader("Cache-Control", "no-cache, must-revalidate");
resp.setHeader("Server", "Microsoft-IIS/10.0");



Заголовок Content-Type должен быть "application/json".
Остальные заголовки в примере могут отличаться.

Для этой программы мне нужен был именно JavaScript тип.

Хорошего Вам дня!
...
Рейтинг: 0 / 0
15.02.2019, 21:39
    #39774776
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
maytonЕсть у меня тайное подозрение что данное решение будет выглядеть лучше на Node.JS.

И компактнее. И безо всяких "библиотек|.
у ноды просто эти потршки чуть поглубже спрятаны.
...
Рейтинг: 0 / 0
18.02.2019, 04:36
    #39775292
artur1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на java запустить сайт и обработать ответ.
про urlconnection - не совсем подходит. Он возвращает полностью страницу. А если в контакте не зарегистрирован то должна появится страница авторизации где пользователь авторизируется а потом уже после авторизации файл в формате Json - если бы не не страница авторизации то urlconnection полностью подходит. А так он возвращает страницу авторизации в html виде. Но я эту проблему решил обработку метода https://oauth.vk.com/authorize? - я переправляю переправляю на отдельный сервлет с помощью параметра redirect_uri.
Ну а все другие методы из api вк можно вызывать с помощью url connection.

Всем спасибо еще увидимся.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как на java запустить сайт и обработать ответ. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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