Android http php json mysqli web services insert and extract data not working

I do not know where the error is. Hope someone can help me. Running it on a real Android device, it returns "Invalid user data", and howewer it does not send data to mysql server, and then to the database. If I run php files from the Chrome browser, it works fine. I use wampp server as localhost. Thank you very much in advance.

Android manifest

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wikibuyers.loginregister" > <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Login" android:label="@string/title_activity_login" > </activity> <activity android:name=".Register" android:label="@string/title_activity_register" > </activity> </application> </manifest> 

Login

 package com.wikibuyers.loginregister; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Login extends Activity implements View.OnClickListener{ Button bLogin; EditText etUsername, etPassword; TextView tvRegisterLink; UserLocalStore userLocalStore; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); bLogin = (Button)findViewById(R.id.bLogin); etUsername = (EditText)findViewById(R.id.etUsername); etPassword = (EditText)findViewById(R.id.etPassword); tvRegisterLink = (TextView)findViewById(R.id.tvRegisterLink); bLogin.setOnClickListener(this); tvRegisterLink.setOnClickListener(this); userLocalStore = new UserLocalStore(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.bLogin: String username = etUsername.getText().toString(); String password = etPassword.getText().toString(); User user = new User(username,password); authenticate(user); userLocalStore.storeUserData(user); userLocalStore.setUserLoggedIn(true); break; case R.id.tvRegisterLink: startActivity(new Intent(this,Register.class)); break; } } private void authenticate(User user){ ServerRequest serverRequest = new ServerRequest(this); serverRequest.fetchUserDataInBackground(user, new GetUserCallback() { @Override public void done(User returnedUser) { if (returnedUser == null){ showErrorMessage(); }else{ logUserIn(returnedUser); } } }); } private void showErrorMessage(){ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Login.this); dialogBuilder.setMessage("Incorrect user details"); dialogBuilder.setPositiveButton("Ok", null); dialogBuilder.show(); } private void logUserIn(User returnedUser){ userLocalStore.storeUserData(returnedUser); userLocalStore.setUserLoggedIn(true); startActivity(new Intent(this, MainActivity.class)); } } 

Register Activity

 package com.wikibuyers.loginregister; import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; public class Register extends Activity implements View.OnClickListener{ Button bRegister; EditText etName, etAge, etUsername, etPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); etName = (EditText)findViewById(R.id.etName); etAge = (EditText)findViewById(R.id.etAge); etUsername = (EditText)findViewById(R.id.etUsername); etPassword = (EditText)findViewById(R.id.etPassword); bRegister = (Button)findViewById(R.id.bRegister); bRegister.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bRegister: String name = etName.getText().toString(); String username = etUsername.getText().toString(); String password = etPassword.getText().toString(); int age = Integer.parseInt(etAge.getText().toString()); User user = new User(name,age,username,password); registerUser(user); break; } } private void registerUser(User user){ ServerRequest serverRequest = new ServerRequest(this); serverRequest.storeUserDataInBackground(user, new GetUserCallback() { @Override public void done(User returnedUser) { startActivity(new Intent(Register.this,Login.class)); } }); } } 

Server Request Handler

 package com.wikibuyers.loginregister; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; /** * Created by Domenico on 20/08/15. */ public class ServerRequest { ProgressDialog progressDialog; public static final int CONNECTION_TIMEOUT = 1000*15; public static final String SERVER_ADDRESS = "http://192.168.1.***:8080/"; public ServerRequest (Context context){ progressDialog = new ProgressDialog(context); progressDialog.setCancelable(false); progressDialog.setTitle("Processing"); progressDialog.setMessage("Please wait..."); } public void storeUserDataInBackground(User user, GetUserCallback userCallback){ progressDialog.show(); new StoreUserDataAsyncTask(user,userCallback).execute(); } public void fetchUserDataInBackground(User user, GetUserCallback userCallback){ progressDialog.show(); new fetchUserDataAsyncTask(user,userCallback).execute(); } public class StoreUserDataAsyncTask extends AsyncTask <Void,Void,Void>{ User user; GetUserCallback userCallback; public StoreUserDataAsyncTask(User user, GetUserCallback userCallback){ this.user = user; this.userCallback = userCallback; } @Override protected Void doInBackground(Void... params) { ArrayList<NameValuePair> dataToSend = new ArrayList<NameValuePair>(); dataToSend.add(new BasicNameValuePair("name", user.name)); dataToSend.add(new BasicNameValuePair("age", user.age + "")); dataToSend.add(new BasicNameValuePair("username", user.username)); dataToSend.add(new BasicNameValuePair("password", user.password)); HttpParams httpRequestParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT); HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT); HttpClient client = new DefaultHttpClient(httpRequestParams); HttpPost post = new HttpPost(SERVER_ADDRESS+"Register.php"); try { post.setEntity(new UrlEncodedFormEntity(dataToSend)); HttpResponse httpResponse = client.execute(post); } catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid){ progressDialog.dismiss(); userCallback.done(null); super.onPostExecute(aVoid); } } public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User>{ User user; GetUserCallback userCallback; User returnedUser ; public fetchUserDataAsyncTask(User user, GetUserCallback userCallback){ this.user = user; this.userCallback = userCallback; } @Override protected User doInBackground(Void... params) { ArrayList<NameValuePair> dataToSend = new ArrayList<NameValuePair>(); dataToSend.add(new BasicNameValuePair("username", user.username)); dataToSend.add(new BasicNameValuePair("password", user.password)); HttpParams httpRequestParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT); HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT); HttpClient client = new DefaultHttpClient(httpRequestParams); HttpPost post = new HttpPost(SERVER_ADDRESS + "FetchUserData.php"); try { post.setEntity(new UrlEncodedFormEntity(dataToSend)); HttpResponse httpResponse = client.execute(post); HttpEntity entity = httpResponse.getEntity(); String result = EntityUtils.toString(entity); try { JSONObject jObject = new JSONObject(result); if (jObject.length() == 0) { returnedUser = null; } else { String name = jObject.getString("name"); int age = jObject.getInt("age"); returnedUser = new User(name, age, user.username, user.password); } }catch (JSONException jE){ jE.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } return returnedUser; } @Override protected void onPostExecute(User returnedUser){ progressDialog.dismiss(); userCallback.done(returnedUser); super.onPostExecute(returnedUser); } } } 

Primary activity

 package com.wikibuyers.loginregister; import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements View.OnClickListener{ Button bLogout; EditText etName, etAge, etUsername; UserLocalStore userLocalStore; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bLogout = (Button)findViewById(R.id.bLogout); etName = (EditText)findViewById(R.id.etName); etAge = (EditText)findViewById(R.id.etAge); etUsername = (EditText)findViewById(R.id.etUsername); bLogout.setOnClickListener(this); userLocalStore = new UserLocalStore(this); } @Override protected void onStart() { super.onStart(); if (autenthicate() == true){ displayUserDetails(); }else { startActivity(new Intent(MainActivity.this, Login.class)); } } private void displayUserDetails(){ User user = userLocalStore.getLoggedInUser(); etUsername.setText(user.username); etName.setText(user.name); etAge.setText(user.age + ""); } private boolean autenthicate(){ return userLocalStore.getUserLoggedIn(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bLogout: userLocalStore.clearUserData(); userLocalStore.setUserLoggedIn(false); startActivity(new Intent(this, Login.class)); break; } } } 

User class

 package com.wikibuyers.loginregister; /** * Created by Domenico on 18/08/15. */ public class User { String name, username, password; int age; public User (String name,int age,String username, String password) { this.name = name; this.age = age; this.username = username; this.password = password; } public User (String username,String password){ this.username = username; this.password = password; this.age = -1; this.name = ""; } } 

Class UserLocalStore

 package com.wikibuyers.loginregister; import android.content.Context; import android.content.SharedPreferences; /** * Created by Domenico on 18/08/15. */ public class UserLocalStore { public static final String SP_NAME = "userDetails"; SharedPreferences userLocalDatabase; public UserLocalStore (Context context){ userLocalDatabase = context.getSharedPreferences(SP_NAME,0); } public void storeUserData (User user){ SharedPreferences.Editor spEditor = userLocalDatabase.edit(); spEditor.putString("name",user.name); spEditor.putString("username",user.username); spEditor.putString("password",user.password); spEditor.putInt("age", user.age); spEditor.commit(); } public User getLoggedInUser (){ String name = userLocalDatabase.getString("name", ""); String username = userLocalDatabase.getString("username", ""); String password = userLocalDatabase.getString("password", ""); int age = userLocalDatabase.getInt("age", -1); User storedUser = new User(name,age, username,password); return storedUser; } public void setUserLoggedIn (boolean loggedIn){ SharedPreferences.Editor spEditor = userLocalDatabase.edit(); spEditor.putBoolean("LoggedIn",loggedIn); spEditor.commit(); } public boolean getUserLoggedIn(){ if(userLocalDatabase.getBoolean("loggedIn",false) == true){ return true; }else{ return false; } } public void clearUserData (){ SharedPreferences.Editor spEditor = userLocalDatabase.edit(); spEditor.clear(); spEditor.commit(); } } 

GetUserCallback Interface

 package com.wikibuyers.loginregister; /** * Created by Domenico on 20/08/15. */ interface GetUserCallback { public abstract void done (User returnedUser); } 

register.php

 <?php $con= mysqli_connect("localhost","root","","loginregister"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " .mysqli_connect_error(); exit(); } else{ echo "Connessione effettuata";} if(isset($POST['name'])){$name = $_POST["name"];}else{$name="domenico";} if(isset($POST['age'])){$age = $_POST["age"];}else{$age='42';} if(isset($POST['password'])){$password = $_POST["password"];}else{$password="pacecca";} if(isset($POST['username'])){$username = $_POST["username"];}else{$username="dompac";} $statement = mysqli_prepare($con, "INSERT INTO user (name, age, username, password) VALUES (?, ?, ?, ?)"); mysqli_stmt_bind_param($statement, "siss", $name, $age, $username, $password); mysqli_stmt_execute($statement); mysqli_close($con); ?> 

Fetch_User_Data.php

 <?php $con=mysqli_connect("localhost","root", "","loginregister"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " .mysqli_connect_error(); } $statement=mysqli_stmt_init($con); if (mysqli_stmt_prepare($statement, "SELECT * FROM user WHERE username = ? AND password = ?")){ mysqli_stmt_bind_param($statement, "ss", $username, $password); mysqli_stmt_execute($statement); mysqli_stmt_bind_result($statement, $userID, $name, $age, $username, $password); } $user = array(); while (mysqli_stmt_fetch($statement)){ $user[0] = $name; $user[1] = $age; $user[2] = $username; $user[3] = $password; } echo json_encode ($user); mysqli_stmt_close($statement); mysqli_close($con); ?> 
+1
source share
1 answer

I'm sorry. The problem was simple, even if she went crazy for a couple of weeks! Take a look at the fetch_User_Data.php file and look at the line where I call it โ€œFetchUserData.phpโ€ and you will be ready ...

0
source

All Articles