Получение запроса GET вместо POST - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь создать клиент-серверное приложение, и сейчас я застрял. У меня есть этот код Java на моем клиенте.

        HttpURLConnection connection;
        connection = (HttpURLConnection) new URL("http://www.masterpaint.gr/login.php").openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestProperty("Content-Type","application/json; charset=UTF-8");
        connection.setRequestProperty("Accept","application/json: charset=UTF-8");
        connection.setRequestMethod("POST");

        System.out.println("The request method on client end is " + connection.getRequestMethod());
        System.out.println("Server response to connection " + connection.getResponseMessage());

        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String buffer;
        StringBuilder stringBuilder = new StringBuilder();
        while ((buffer = reader.readLine()) != null) {
            stringBuilder.append(buffer);
        }
        System.out.println("The request methond on server end is " + stringBuilder.toString()); 

А это простой тестовый php-код на сервере.

  <?php   echo $_SERVER['REQUEST_METHOD'];  ?>

Всякий раз, когда я запускаю эту тестовую Java-программу и пытаюсь подключиться, я получаю один и тот же вывод.

Метод запроса на стороне клиента - POST
Ответ сервера на соединение в порядке
Метонд запроса на конец сервера GET

Сценарий php всегда повторяет, что я отправляю запрос GET, даже если мой код Java утверждает, что использовать POST. Я попытался подключиться к сценарию через почтальона, используя разные методы запроса, и все нормально, поэтому проблема должна быть в коде Java. Любое понимание будет с благодарностью.

1 Ответ

0 голосов
/ 06 сентября 2018

У меня нет опыта работы с php, но похоже, что он ищет заголовок длины содержимого, который не будет отправлен в вашем случае, поэтому он обрабатывает это как запрос GET.

HttpURLConnection connection;
         connection = (HttpURLConnection) new URL("http://www.masterpaint.gr/login.php").openConnection();
         connection.setDoOutput(true);
         connection.setDoInput(true);
         connection.setRequestProperty("Content-Type","application/json; charset=UTF-8");
         connection.setRequestProperty("Accept","application/json: charset=UTF-8");
         connection.setRequestMethod("POST");
         connection.setFixedLengthStreamingMode(0);
         System.out.println("The request method on client end is " + connection.getRequestMethod());
         System.out.println("Server response to connection " + connection.getResponseMessage());

         BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
         String buffer;
         StringBuilder stringBuilder = new StringBuilder();
         while ((buffer = reader.readLine()) != null) {
             stringBuilder.append(buffer);
         }
         System.out.println("The request methond on server end is " + stringBuilder.toString()); 

Это установит длину контента 0, поскольку вы не отправляете контент.

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