2017-01-03 1 views
0

Когда я нажимаю кнопку регистрации, ничего не происходит в бэкэнд. В таблице ничего не вводится. Кажется, что есть нет ошибки в коде. Я думаю, что URL, который я использую, является проблемой. Пожалуйста, помогите мне в этом.Я пробовал регистрационную форму в андроиде, используя Php, MySQL и ответ, используя парсинг JSON, но детали не вставлены в таблицу

RegisterRequest.java

import com.android.volley.AuthFailureError; 
import com.android.volley.Response; 
import com.android.volley.toolbox.StringRequest; 
import java.util.HashMap; 
import java.util.Map; 

public class RegisterRequest extends StringRequest { 
    private static final String REGISTER_REQUEST_URL="http://192.168.1.40/Register.php"; 
    private Map<String,String> params; 
    public RegisterRequest(String name, String username, int age, String password, Response.Listener<String> listener) { 
     super(Method.POST, REGISTER_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("name", name); 
     params.put("username", username); 
     params.put("password", password); 
     params.put("age", age + ""); 
    } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

Регистрация код активность:

package com.login.sowmy.loginregister; 
import android.content.Intent; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.Volley; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class RegisterActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 
     final EditText etAge=(EditText) findViewById(R.id.etAge); 
     final EditText etName=(EditText) findViewById(R.id.etName); 
     final EditText etUserName=(EditText) findViewById(R.id.etUserName); 
     final EditText etPassword=(EditText) findViewById(R.id.etPassword); 
     final Button bRegister=(Button) findViewById(R.id.BRegister); 

     bRegister.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final String name=etName.getText().toString(); 
       final String username=etUserName.getText().toString(); 
       final String password=etPassword.getText().toString(); 
       final int age=Integer.parseInt(etAge.getText().toString()); 
       Response.Listener<String> responseLister= new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 
          JSONObject jsonObject=new JSONObject(response); 
          boolean success=jsonObject.getBoolean("success"); 
          if(success){ 
           Intent i=new Intent(RegisterActivity.this,LoginActivity.class); 
           RegisterActivity.this.startActivity(i); 
          }else{ 
           AlertDialog.Builder builder=new AlertDialog.Builder(RegisterActivity.this); 
           builder.setMessage("Register Failed").setNegativeButton("Retry",null).create().show(); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }; 
       RegisterRequest registerRequest=new RegisterRequest(name,username,age,password,responseLister); 
       RequestQueue queue= Volley.newRequestQueue(RegisterActivity.this); 
       queue.add(registerRequest); 
      } 
     }); 
    } 
} 

Я добавил разрешение интернет в файле манифеста и включен компилировать 'com.android.volley: залп: 1.0.0' в строить gradle.My андроид версия 2.2.3

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

<?php 
$con = mysqli_connect("localhost", "root", "", "employee11"); 
$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 
mysqli_stmt_execute($statement); 
$response = array(); 
$response["success"] = true; 
echo json_encode($response); 
?> 
+0

Вы получаете ответ от сервера? –

+0

Нет. Я не получаю ответа.Я сомневаюсь, что он попадает на сервер или нет – Sowmya

+0

. Почему вы не проверяете окно logcat на IDE, если какие-то проблемы регистрируются –

ответ

0

Прежде всего проверьте api, используя почтальон. Если его нормально, то проверьте с volley.And ваш api возвращает json array ['success': 'true']. Поэтому см. Следующий код.

// Creating volley request obj 
    JsonArrayRequest FormPostRequest = new JsonArrayRequest(url, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 

        // Parsing json 
         try { 
          JSONObject obj = response.getJSONObject(0); 
          Toast.makeText(this, obj.getString("success"), Toast.LENGTH_SHORT).show(); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
     } 
    }); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(FormPostRequest); 
0

Шаг 1 делают db_connect.php

// change the credential which is required for HOST,USER,PASS,DB 
<?php 
define('HOST','localhost'); 
define('USER','root'); 
define('PASS','[email protected]'); 
define('DB','db name'); 

$con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
?> 

Шаг 2 сделать еще один файл get.php

2,1 включают db_connect.php файл в этом

2.2 имя таблицы и имя столбца должно быть таким же, как и БД При

<?php 

include 'db_connect.php'; 
$datetime = date('d/m/Y'); 
$request=$_REQUEST['getdata']; 

// customer Registration form 
if($request=="registerCustomer") 
     { 

     $user_Name =$_REQUEST['name']; 

     $user_age =$_REQUEST['age']; 

     $user_userName =$_REQUEST['username']; 

     $user_password =$_REQUEST['password']; 

    // sql query with database column name and table name should be same as in database 

     $insert_Values=mysqli_query($con,"INSERT INTO `user`(`name`, `username`, `age`, `password`) 
              VALUES ('$user_Name','$user_userName','$user_age','$user_password')"); 

       if($insert_Values) 
       { 
        $flag["code"]="data inserted"; 
       } 
       else 
       { 
        $flag["code"]="data not inserted"; 
       } 


      print(json_encode($flag));  
     } 
else 
{ 

    $flag['Error']='2'; 
    print(json_encode($flag));  

}  
?> 

Шаг 3 В Android, который вы используете Volley. поэтому см. ниже код.

3.1 create one `VolleyAppController` which `extends application` check below code 


public class VolleyAppController extends Application { 

    // this methode is for multidex install For Map and google Api 
    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 

    public static final String TAG = VolleyAppController.class 
      .getSimpleName(); 

    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 

    private static VolleyAppController mInstance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mInstance = this; 
    } 

    public static synchronized VolleyAppController getInstance() { 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
     } 

     return mRequestQueue; 
    } 

    public ImageLoader getImageLoader() { 
     getRequestQueue(); 
     if (mImageLoader == null) { 
      mImageLoader = new ImageLoader(this.mRequestQueue, 
        new LruBitmapCache()); 
     } 
     return this.mImageLoader; 
    } 

    public <T> void addToRequestQueue(Request<T> req, String tag) { 
     // set the default tag if tag is empty 
     req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); 
     getRequestQueue().add(req); 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     req.setTag(TAG); 
     getRequestQueue().add(req); 
    } 

    public void cancelPendingRequests(Object tag) { 
     if (mRequestQueue != null) { 
      mRequestQueue.cancelAll(tag); 
     } 
    } 


} 

3,2 в андроида menifest вам нужно сделать изменения. 1) Добавить выше класс андроид menifest 2) android:name=".VolleyAppController"

<application 
     android:name=".Volley.VolleyAppController" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

3,3 1) вам просто нужно передать параметр и проверить товар.

 2)i have created one methode use that methode and call that methode from where you want to insert data 

     3) take care of params.put("name","Value"); 
     4) In get.php $_REQUEST['name']; 
     5) params.put("name") and $_REQUEST['name'] should be same 



public void insertCustomerData() { 

     Log.e(TAG, CustomerURL); 
     final ProgressDialog pDialog = new ProgressDialog(this); 
     pDialog.setMessage("Registration is in Process Please wait..."); 
     pDialog.show(); 

     StringRequest stringRequest = new StringRequest(Request.Method.POST, 
       CustomerURL, 
       new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 
         pDialog.hide(); 

         Log.e("responce", response); 

        } 
       }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, error.getMessage()); 
       pDialog.hide(); 

      } 
     }) { 

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


       Map<String, String> params = new HashMap<String, String>(); 
       params.put("getdata", "registerCustomer"); 

       params.put("name", "Yogesh"); 
       params.put("age", "25"); 
       params.put("username", "YogeshBorhade"); 
       params.put("password", "password"); 

// я гнал статические данные InstEd того, что вы можете поместить строку там

   return params; 
      } 


     }; 

     // Adding request to request queue 
     VolleyAppController.getInstance().addToRequestQueue(stringRequest); 

    } 

Если у вас есть какие-либо сомнения, пожалуйста, дайте мне знать ..

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

Смежные вопросы