Click here to Skip to main content
15,889,266 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I just want to login to my Data Base using php code and view the result in just a Toast
but I don't know where I should looking for the error when appear FATAL EXCEPTION

Android Code:

Java
    package com.example.e_music;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

	
	
	
	    EditText username,password; 
	    Button btnLogin,btnReg;

	    JSONParser jp=new JSONParser();
	    private static final String sTag_Login="login";

	    //URL of the PHP API
	    private static String loginURL = "http://mwssong.esy.es/android/Login.php";

	    
	    
	    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        username = (EditText)findViewById(R.id.txtUN);
        password = (EditText)findViewById(R.id.txtP);
        
        btnLogin = (Button)findViewById(R.id.btnLogin);
        btnReg = (Button)findViewById(R.id.btnReg);
        
      
        
        btnReg.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				
				
				 Intent iReg = new Intent(getApplicationContext(), Registeration.class);
	             iReg.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	             startActivity(iReg);
				
			}
		});
        
        
        
        
        btnLogin.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				   
				if (  ( !username.getText().toString().equals("")) && ( !password.getText().toString().equals("")) )
	              {
	        		 new Connect().execute();
	              }
	              else if ( ( !username.getText().toString().equals("")) )
	              {
	                  Toast.makeText(getApplicationContext(),
	                          "Password field empty", Toast.LENGTH_SHORT).show();
	              }
	              else if ( ( !password.getText().toString().equals("")) )
	              {
	                  Toast.makeText(getApplicationContext(),
	                          "User Name field empty", Toast.LENGTH_SHORT).show();
	              }
	              else
	              {
	                  Toast.makeText(getApplicationContext(),
	                          "User Name and Password field are empty", Toast.LENGTH_SHORT).show();
	              } 
				
				
			}
		});
    }


    
    
    
    
    
    
    
    //To Connect
    
    class Connect extends AsyncTask<String, String, String>
    {

    	@Override
    	protected String doInBackground(String... arg0) {
    		// TODO Auto-generated method stub
    	    List<NameValuePair> params= new ArrayList<NameValuePair>();
    	      params.add(new BasicNameValuePair("username", username.getText().toString()));
    	      params.add(new BasicNameValuePair("password", password.getText().toString()));

    	      JSONObject json=JSONParser.getJSONFromUrl(loginURL, params);
    	      
    	      try{
    	    	  String login= json.getString(sTag_Login);
    	    	  if(login=="Admin"){
    	    		  Toast.makeText(getApplicationContext(), "Welcome Admin", Toast.LENGTH_LONG).show();
    	    	  }
    	    	  else if(login=="Customer"){
    	    		  Toast.makeText(getApplicationContext(), "Welcome", Toast.LENGTH_LONG).show();
    	    	  }
    	    	  {

    	    		  Toast.makeText(getApplicationContext(), "error ", Toast.LENGTH_LONG).show();
    	    	  }
    	    	  }catch(JSONException e){
    	    		  e.printStackTrace();
    	    		  
    	    	  }
    	    	  
    	      
    	
    	      
    		return null;
    	}
    	
    	
    	
    }





and this's my php code:

PHP
<?php
 
 // array for JSON response
$response = array();
$db = mysqli_connect('mysql.hostinger.ae','u641845309_ur','q1p0w2o9','u641845309_song');



// username and password sent from Form and protect MySQL injection for Security purpose
$username=$_POST['username']; 
$password=$_POST['password']; 

$sql="SELECT * FROM customer WHERE UName='$username' and Password='$password'";

// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$result=mysqli_query($db,$sql);  
  


// If result matched $myusername and $mypassword, table row must be 1 row
if($result)
{ 
  while($row = mysqli_fetch_array($result)) {
                            
if(strtolower($username)=='admin') 
 $response["login"] =   "Admin"; 
else 
 $response["login"] = "Customer"; 
  }
}
else 
{
 $response["login"] ="error"; 
}
 
  // echoing JSON response
    echo json_encode($response);

?>




JSON Code:

Java
package com.example.e_music;



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

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.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public static JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            Log.e("JSON", json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }
}
Posted
Updated 15-Jan-16 7:54am
v2
Comments
Richard MacCutchan 15-Jan-16 13:35pm    
Please provide proper details; we cannot guess where the exception occurs or what information it provides.
Y.Ahmad 15-Jan-16 13:51pm    
This all what LogCat give:





01-15 13:49:35.770: D/gralloc_goldfish(2098): Emulator without GPU emulation detected.
01-15 13:49:39.800: D/dalvikvm(2098): GC_FOR_ALLOC freed 166K, 7% free 3117K/3348K, paused 54ms, total 68ms
01-15 13:49:39.800: D/InputEventConsistencyVerifier(2098): KeyEvent: ACTION_UP but key was not down.
01-15 13:49:39.800: D/InputEventConsistencyVerifier(2098): in android.widget.LinearLayout{b3d26008 V.E..... ......I. 0,59-455,118}
01-15 13:49:39.800: D/InputEventConsistencyVerifier(2098): 0: sent at 8592505000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=8592505, downTime=8592401, deviceId=0, source=0x101 }
01-15 13:50:01.560: W/System.err(2098): java.net.UnknownHostException: Unable to resolve host "mwssong.esy.es": No address associated with hostname
01-15 13:50:01.570: W/System.err(2098): at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
01-15 13:50:01.580: W/System.err(2098): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
01-15 13:50:01.580: W/System.err(2098): at java.net.InetAddress.getAllByName(InetAddress.java:214)
01-15 13:50:01.580: W/System.err(2098): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
01-15 13:50:01.590: W/System.err(2098): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
01-15 13:50:01.590: W/System.err(2098): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
01-15 13:50:01.590: W/System.err(2098): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
01-15 13:50:01.600: W/System.err(2098): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
01-15 13:50:01.600: W/System.err(2098): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
01-15 13:50:01.600: W/System.err(2098): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
01-15 13:50:01.600: W/System.err(2098): at com.example.e_music.JSONParser.getJSONFromUrl(JSONParser.java:44)
01-15 13:50:01.610: W/System.err(2098): at com.example.e_music.MainActivity$Connect.doInBackground(MainActivity.java:126)
01-15 13:50:01.620: W/System.err(2098): at com.example.e_music.MainActivity$Connect.doInBackground(MainActivity.java:1)
01-15 13:50:01.620: W/System.err(2098): at android.os.AsyncTask$2.call(AsyncTask.java:288)
01-15 13:50:01.620: W/System.err(2098): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-15 13:50:01.640: W/System.err(2098): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
01-15 13:50:01.640: W/System.err(2098): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-15 13:50:01.650: W/System.err(2098): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-15 13:50:01.650: W/System.err(2098): at java.lang.Thread.run(Thread.java:841)
01-15 13:50:01.670: W/System.err(2098): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
01-15 13:50:01.670: W/System.err(2098): at libcore.io.Posix.getaddrinfo(Native Method)
01-15 13:50:01.670: W/System.err(2098): at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
01-15 13:50:01.670: W/System.err(2098): at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
01-15 13:50:01.670: W/System.err(2098): ... 18 more
01-15 13:50:01.680: E/Buffer Error(2098): Error converting result java.lang.NullPointerException: lock == null
01-15 13:50:01.680: E/JSON Parser(2098): Error parsing data org.json.JSONException: End of input at character 0 of
01-15 13:50:01.680: W/dalvikvm(2098): threadid=12: thread exiting with uncaught exception (group=0xb3a22ba8)
01-15 13:50:01.750: E/AndroidRuntime(2098): FATAL EXCEPTION: AsyncTask #2
01-15 13
Richard Deeming 15-Jan-16 15:04pm    
Well, which part of Unable to resolve host "mwssong.esy.es": No address associated with hostname was unclear?

There's a problem with the DNS or network setup on whatever device is running that code. Google happily resolves the A record for that hostname, so you need to find out why your device can't find it.
Y.Ahmad 15-Jan-16 15:34pm    
I saw it, and I tried to connect with php code, and it worked.
but in android I don't know why even I put in Manifest.xml permission connect with Internet:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Y.Ahmad 15-Jan-16 15:34pm    
uses-permission android:name="android.permission.INTERNET"

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900