невозможно определить параметры сообщения в php, отправленные с Android - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь заполнить базу данных Postgres через приложение для Android. Я использую Volley и Php для отправки данных в базу данных Postgres. Запрос Post хорошо работает через браузер, т. Е. База данных заполняется, что проверяется с помощью расширения Chrome Postman. Но когда я делаю это через Android, я не могу этого сделать. Я также не получаю никакой ошибки.

Пожалуйста, найдите нижеприведенный код, куда я отправляю параметры сообщений x и y на URL.

submitbutton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                builder.setTitle("Server Response");
                builder.setMessage("Response: "+response);
                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(Soil_Info.this, "Clear fields here", Toast.LENGTH_SHORT).show();
                    }
                });

                AlertDialog alertDialog =builder.create();
                alertDialog.show();
                Toast.makeText(Soil_Info.this, "Successfull", Toast.LENGTH_SHORT).show();

            }
        }

                , new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                Toast.makeText(Soil_Info.this, "Error Occured", Toast.LENGTH_SHORT).show();
                error.printStackTrace();

            }
        }){

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

                Map <String,String> params=new HashMap<>();

                params.put("x", "aisha");
                params.put("y", "shah");
                return params;
            }
        };


        MySingleton.getInstance(Soil_Info.this).addTorequestque(stringRequest);

        stringRequest.setRetryPolicy(new RetryPolicy() {
            @Override
            public int getCurrentTimeout() {
                return 50000;
            }

            @Override
            public int getCurrentRetryCount() {
                return 50000;
            }

            @Override
            public void retry(VolleyError error) throws VolleyError {
            }
        });

Ниже приведен код PHP

    <?php
require "connection.php";


if(isset($_REQUEST["x"]) && isset($_REQUEST["y"]))
{
    $names = $_REQUEST["x"];
    $surnames = $_REQUEST["y"];


    // echo $names ;
    // echo $surnames ;

    $query = "INSERT INTO emp (first, last) VALUES ('$names','$surnames')";
    echo $query;

    $result = pg_query($conn, $query);

    if (!$result) {
        die('An error occurred during query.');
    } else {
      echo ".....Successfull.....";
    }   
   }
  else
   {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
  }



pg_close($conn); 

?>

String URL = "http://192.168.1.107/test.php";

1 Ответ

0 голосов
/ 14 апреля 2019

Вы запускаете свой проект на виртуальном хосте, который доступен для вашего браузера, приложения почтальона и т. Д. Но ваш телефон не может сделать действительный запрос.

Что вы можете сделать это:

  1. Разверните ваш серверный проект на реальном сервере, который требует много работы, но того стоит. Затем вы можете получить доступ к вашему API через реальный IP-адрес

  2. эмулятор пользователя вместо вашего телефона

  3. Сделайте ваш локальный хост доступным для вашей локальной сети, чтобы вы могли получить к нему доступ через телефон. посмотрите этот ответ для подробностей

...