Показывает ошибку по умолчанию, т.е. предоставляет все значения. Короче говоря JSON не помещает значения на сервер - PullRequest
1 голос
/ 17 января 2020
 class RegisterUser extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... voids) {
            //creating request handler object
            RequestHandler requestHandler = new RequestHandler();

            //creating request parameters
            HashMap<String, String> params = new HashMap<>();
            params.put("name", name);
            params.put("email", email);
            params.put("mobile", mobile);
            params.put("password", password);

            //returing the response
            return requestHandler.sendPostRequest(URLs.URL_REGISTER, params);
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            try {
                //converting response to json object
                JSONObject obj = new JSONObject(s);

                int a= obj.getInt("error");
                //if no error in response
                if (a==0) {
                    Snackbar.make(parent_view, obj.getString("alert"), Snackbar.LENGTH_SHORT).show();

                    //starting the OTP activity
                    signintxt.setText("OTP");
                    getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.frmframelayout, new fragment_reg_otp(), "reg_otp").addToBackStack("reg_otp").commit();
                } else {
                    Snackbar.make(parent_view, obj.getString("alert"), Snackbar.LENGTH_SHORT).show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
    //executing the async task
    RegisterUser ru = new RegisterUser();
    ru.execute();
}


  **request handler class**
   public String sendPostRequest(String requestURL, HashMap<String, String> postDataParams) {
    URL url;

    StringBuilder sb = new StringBuilder();
    try {
        url = new URL(requestURL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
        conn.setRequestProperty("Accept","application/json");
        conn.setDoInput(true);
        conn.setDoOutput(true);

        OutputStream os = conn.getOutputStream();

        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode = conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {

            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            sb = new StringBuilder();
            String response;

            while ((response = br.readLine()) != null) {
                sb.append(response);
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return sb.toString();
}

В этом я не получаю никакой ошибки, но он не принимает / выводит значения на сервер, он показывает мне ошибку по умолчанию, которая предоставляет все значения. Когда я сказал изменить метод в коде Php с POST на GET, он сработал.

Я также поделился своим классом обработчика запросов. Почему это происходит, я не знаю, поможет ли это понять.

Ответы [ 2 ]

1 голос
/ 20 января 2020

Спасибо всем, что я получил решение.

1 голос
/ 17 января 2020

Почему ты делаешь что-то сложное? где простое и чистое решение для вас ??? используйте volley: добавьте ниже зависимости к build.gradle:

реализация 'com. android .volley: volley: 1.1.1'

для запроса POST:

public void RegisterUser(){
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            // Example
            Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();

            // any action....
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();

            params.put("exampleKey1", "example value");

            // if integer type value then convert it into string like below
            params.put("key2", Integer.toString(int value));

            return params;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

Для запроса GET:

public void RegisterUser(){
String url = "example.com?key=value";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        // Example
        Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();

        // any action....
    }
},
new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
    }
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

}

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