Spec-Zone.ru › OpenJDK 17

Пакет com.sun.net.httpserver

package com.sun.net.httpserver
Предоставляет простой API сервера HTTP высокого уровня, который можно использовать для создания встроенных HTTP-серверов. Поддерживаются как "http", так и "https". API предоставляет частичную реализацию RFC 2616 (HTTP 1.1) и RFC 2818 (HTTP с TLS). Любую функциональность HTTP, не предоставляемую этим API, можно реализовать кодом приложения, используя этот API.

Программисты должны реализовать интерфейс HttpHandler. Этот интерфейс предоставляет обратный вызов, который вызывается для обработки входящих запросов от клиентов. HTTP-запрос и его ответ известны как обмен. HTTP-обмены представлены классом HttpExchange. Класс HttpServer используется для прослушивания входящих TCP-соединений и перенаправляет запросы по этим соединениям обработчикам, которые были зарегистрированы в сервере.

Ниже представлен минимальный пример HTTP-сервера:

   class MyHandler implements HttpHandler {
       public void handle(HttpExchange t) throws IOException {
           InputStream is = t.getRequestBody();
           read(is); // .. read the request body
           String response = "This is the response";
           t.sendResponseHeaders(200, response.length());
           OutputStream os = t.getResponseBody();
           os.write(response.getBytes());
           os.close();
       }
   }
   ...

   HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
   server.createContext("/applications/myapp", new MyHandler());
   server.setExecutor(null); // creates a default executor
   server.start();
   

В приведенном выше примере создается простой HttpServer, который использует поток вызывающего приложения для вызова метода handle() для входящих запросов HTTP по порту 8000 и пути /applications/myapp/.

Класс HttpExchange инкапсулирует все, что необходимо приложению для обработки входящих запросов и генерации соответствующих ответов.

Регистрация обработчика в HttpServer создает объект HttpContext, и объекты Filter можно добавить в возвращённый контекст. Фильтры используются для выполнения автоматической предварительной и последующей обработки обменов, прежде чем они будут переданы обработчику обмена.

Для обработки конфиденциальной информации можно использовать HttpsServer для обработки запросов "https", защищенных протоколами SSL или TLS. HttpsServer должен быть предоставлен с объектом HttpsConfigurator, который содержит инициализированный объект SSLContext. HttpsConfigurator можно использовать для настройки наборов шифров и других параметров работы SSL. Простой пример SSLContext можно создать следующим образом:

   char[] passphrase = "passphrase".toCharArray();
   KeyStore ks = KeyStore.getInstance("JKS");
   ks.load(new FileInputStream("testkeys"), passphrase);

   KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
   kmf.init(ks, passphrase);

   TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
   tmf.init(ks);

   SSLContext ssl = SSLContext.getInstance("TLS");
   ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
   

В приведенном выше примере используется файл хранилища ключей "testkeys", созданный с помощью утилиты keytool, в качестве хранилища сертификатов для клиентских и серверных сертификатов. Следующий код показывает, как SSLContext используется в HttpsConfigurator, и как SSLContext и HttpsConfigurator связаны с HttpsServer.

    server.setHttpsConfigurator (new HttpsConfigurator(sslContext) {
        public void configure (HttpsParameters params) {

        // get the remote address if needed
        InetSocketAddress remote = params.getClientAddress();

        SSLContext c = getSSLContext();

        // get the default parameters
        SSLParameters sslparams = c.getDefaultSSLParameters();
        if (remote.equals (...) ) {
            // modify the default set for client x
        }

        params.setSSLParameters(sslparams);
        // statement above could throw IAE if any params invalid.
        // eg. if app has a UI and parameters supplied by a user.

        }
    });
   
Since:
1.6
Пакет Описание
com.sun.net.httpserver.spi
Предоставляет интерфейс поставщика услуг с возможностью подключаемого модуля, позволяющий заменить реализацию HTTP-сервера другими реализациями.
Класс Описание
Authenticator
Authenticator представляет реализацию механизма аутентификации HTTP.
Authenticator.Failure
Указывает на ошибку аутентификации.
Authenticator.Result
Базовый класс для возвращаемого типа метода Authenticator.authenticate(HttpExchange).
Authenticator.Retry
Указывает, что аутентификацию необходимо повторить.
Authenticator.Success
Указывает, что аутентификация выполнена успешно, и аутентифицированного пользователя principal можно получить, вызвав Authenticator.Success.getPrincipal().
BasicAuthenticator
BasicAuthenticator предоставляет реализацию HTTP-аутентификации Basic.
Filter
Фильтр, используемый для предварительной и последующей обработки входящих запросов.
Filter.Chain
Цепочка фильтров, связанная с HttpServer.
Headers
HTTP-заголовки запроса и ответа представлены этим классом, который реализует интерфейс Map<String, List <String>>.
HttpContext
HttpContext представляет отображение корневого пути URI приложения на HttpHandler, который вызывается для обработки запросов, направленных к этому пути на связанном HttpServer или HttpsServer.
HttpExchange
Этот класс инкапсулирует полученный HTTP-запрос и ответ, который необходимо сгенерировать в одном обмене.
HttpHandler
Обработчик, который вызывается для обработки HTTP-обменов.
HttpPrincipal
Представляет пользователя, аутентифицированного с помощью аутентификации HTTP Basic или Digest.
HttpsConfigurator
Этот класс используется для настройки параметров https для каждого входящего https-соединения на HttpsServer.
HttpServer
Этот класс реализует простой HTTP-сервер.
HttpsExchange
Этот класс инкапсулирует полученный HTTPS-запрос и ответ, который необходимо сгенерировать в одном обмене, и определяет расширения HttpExchange, специфичные для протокола HTTPS.
HttpsParameters
Представляет набор параметров для каждого https-соединения, согласованного с клиентами.
HttpsServer
Этот класс является расширением HttpServer, который предоставляет поддержку HTTPS.

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API