Невозможно прочитать запрос клиента через http в Java - PullRequest
0 голосов
/ 14 октября 2018

У меня есть устройство GPS, которое подключено через http через данный порт для отправки и получения данных с http-сервера.Для тестирования я создал простой Java-сервер Java, который читает запрос и отправляет ответ.вот мой код:

public class simpleHTTPServer {

    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
        HttpContext context = server.createContext("/");
        context.setHandler(simpleHTTPServer::handleRequest);
        server.start();
    }

    private static void handleRequest(HttpExchange exchange) throws IOException {
       // URI requestURI = exchange.getRequestURI();
        printRequestInfo(exchange);
        System.out.println("sending command..");
        String response = "123456";
        exchange.sendResponseHeaders(200, response.getBytes().length);
        OutputStream os = exchange.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }

    private static void printRequestInfo(HttpExchange exchange) {
        System.out.println("-- headers --");
        Headers requestHeaders = exchange.getRequestHeaders();
        requestHeaders.entrySet().forEach(System.out::println);

        System.out.println("-- principle --");
        HttpPrincipal principal = exchange.getPrincipal();
        System.out.println(principal);

        System.out.println("-- HTTP method --");
        String requestMethod = exchange.getRequestMethod();
        System.out.println(requestMethod);

        System.out.println("-- query --");
        URI requestURI = exchange.getRequestURI();
        String query = requestURI.getQuery();
        System.out.println(query);
    }
}

На самом деле это устройство подтвердило, что оно подключено к http-серверу (http://mydomain:9090) и непрерывно отправляет данные, но в моей работающей программе http-сервера я не смог получить ни одного запросас этого устройства.

Чтобы проверить это, я взял tcpdump на порту 9090 и проверил с помощью Wireshark, что это устройство успешно отправляет запросы. Я немного запутался, так как Wireshark показывает, что запрос идет по протоколу TCP.Как я могу прочитать этот запрос через http в Java?

Вот пример информации Wireshark: enter image description here

1 Ответ

0 голосов
/ 14 октября 2018

HTTP работает по TCP.Было сказано, что.Здесь вы можете сделать несколько вещей для отладки этой ситуации:

  • Удаленная отладка сервера
  • Попробуйте использовать приложение типа почтальон для отправки запроса на ваш сервер.Это также покажет ответ, который вы получили.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...