Не удается получить ответ от сервера - связь между приложением Android и WAMP - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь установить связь между приложением Android и сервером WAMP.Чтобы добиться этого, я использую механизм Volley и Singleton на стороне Android и 64-битный WAMP 3.1.4 на стороне сервера.

Я представляю весь процесс так: когда я нажимаю кнопку, какая-то строка будетбыть отправлено на сервер WAMP.Сервер обработает полученную строку и после этого предоставит ответ приложению Android.Основываясь на полученных ответах, приложение для Android сделает некоторые дальнейшие шаги.Я вставил отладочные отпечатки и журналы с обеих сторон, и в соответствии с ними данные успешно получены из приложения Android, но ответ от сервера, по-видимому, отсутствует (потому что Text Toast, который я поместил внутри функции onResponse, не отображается), поэтому etherсервер не дает ответа, или эфирное приложение Android не обрабатывает его должным образом.

Единственное, что мне пришло в голову, это то, что брандмауэр или антивирус как-то блокируют связь, поэтому я отключил их, норезультаты были одинаковыми - Text Toast внутри функции onResponse не вызывался.Вот фрагмент php-скрипта, который выполняется на стороне сервера и в котором я выполняю обработку полученных данных и форматирование ответа:

$conn = mysqli_connect($servername, $username, $password, $db_name);

if ($conn) {
    echo "Connected successfully";      
    if (isset($_POST["LocationOfDriver"])) {
        $LocationOfDriver = $_POST["LocationOfDriver"];
        $Parsed = explode("|", $LocationOfDriver);
        if (!(is_null($Parsed))) {
            $Lat = $Parsed[0];
            $Lon = $Parsed[1];
            $file = fopen($path, 'r+');
            $count = fgets($file, 1024);
            $count = $count + 1;
            fclose($file);
            $file  = fopen( $path, 'w');
            fwrite($file, $count . " " . $Lat . " " . $Lon);
            fclose($file);
            //echo json_encode(array('response' => $Lat));
            $response["response"] = "Success!";
        } else {
            echo "Nothing received";
            $response["response"] = "Failure!";
        }           
    } else {
        $LocationOfDriver = null;
        $response["response"] = "Failure!";
    }
} else {
      die("Connection failed: " . mysqli_connect_error());
      $response["response"] = "Failure!";
}

echo json_encode($response);
mysqli_close($conn);

А вот фрагмент на стороне Android, где я форматирую то, что будет отправлено, игде я получаю ответ (этот метод вызывается при нажатии кнопки):

private void sendLocation(){
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                String Response = jsonObject.getString("response");
                Toast.makeText(MainActivity.this, Response, Toast.LENGTH_LONG).show();
                WantToParkBtn.setText("positive feedback received");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(MainActivity.this, "negative feedback received", Toast.LENGTH_LONG).show();
            WantToParkBtn.setText("negative feedback received");
        }
    })

    {
        @Override
        protected Map <String, String> getParams() throws AuthFailureError{

            Map <String, String> params = new HashMap<>();
            params.put("LocationOfDriver", "14.7|16.8");

            return params;
        }

    };

    MySingleton.getInstance(MainActivity.this).addToRequestQue(stringRequest);
    Toast.makeText(MainActivity.this, "Request sent", Toast.LENGTH_LONG).show();
    WantToParkBtn.setText("info sent");
}

Подводя итог, я получаю следующие результаты: 1) После нажатия кнопки печатается тост «Запрос отправлен» итекст кнопки меняется на «Информация отправлена» (хорошее поведение, которое ожидается) 2) на стороне сервера, когда я открываю текстовый файл с данными журнала, количество обращений увеличивается на 1 (хорошее поведение, что ожидается) 3)Пустыня тостов "Удачи!"или "Отказ!"не печатаются на стороне приложения Android (плохое поведение, которое не ожидается - ожидаемое поведение - печать одного из этих двух сообщений или сообщения об ошибке).Есть какие-нибудь идеи, что пошло не так?Заранее спасибо!

...