Autore Topic: Connessione al database online  (Letto 652 volte)

Offline StefanoAl

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy sII
  • Sistema operativo:
    android 4.1.2
Connessione al database online
« il: 12 Luglio 2013, 04:25:51 CEST »
0
Salve a tutti sono nuovo...
Mi servirebbe sapere perchè tale codice non mi permette di collegarmi e ricevere dati dal mio database online...
Ecco il LoginActivity.java :
Codice (Java): [Seleziona]
package com.example.androidhive;
 
import java.util.HashMap;
 
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import com.example.androidhive.library.DatabaseHandler;
import com.example.androidhive.library.UserFunctions;
 
public class LoginActivity extends Activity {
    Button btnLogin;
    Button btnLinkToRegister;
    EditText inputUsername;
    EditText inputPassword;
    TextView loginErrorMsg;
 
    // JSON Response node names
    private static String KEY_SUCCESS = "success";
    private static String KEY_ERROR = "error";
    private static String KEY_ERROR_MSG = "error_msg";
    private static String KEY_EMAIL = "email";
    private static String KEY_NAME = "name";
    private static String KEY_USERNAME = "username";
    private static String KEY_CREATED_AT = "created_at";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
 
        // Importing all assets like buttons, text fields
        inputUsername = (EditText) findViewById(R.id.inputUsername);
        inputPassword = (EditText) findViewById(R.id.inputPassword);
        btnLogin = (Button) findViewById(R.id.btnLogin);
        btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);
        loginErrorMsg = (TextView) findViewById(R.id.login_error);
 
        // Login button Click Event
        btnLogin.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View view) {
                String username = inputUsername.getText().toString();
                String password = inputPassword.getText().toString();
                UserFunctions userFunction = new UserFunctions();
                Log.d("Button", "Login");
                JSONObject json = userFunction.loginUser(username, password);
 
                // check for login response
                try {
                    if (json.getString(KEY_SUCCESS) != null) {
                        loginErrorMsg.setText("");
                        String res = json.getString(KEY_SUCCESS);
                        if(Integer.parseInt(res) == 1){
                            // user successfully logged in
                            // Store user details in SQLite Database
                            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                            JSONObject json_user = json.getJSONObject("user");
                             
                            // Clear all previous data in database
                            userFunction.logoutUser(getApplicationContext());
                            db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_USERNAME), json.getString(KEY_EMAIL), json_user.getString(KEY_CREATED_AT));                        
                             
                            // Launch Dashboard Screen
                            Intent dashboard = new Intent(getApplicationContext(), DashboardActivity.class);
                             
                            // Close all views before launching Dashboard
                            dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(dashboard);
                             
                            // Close Login Screen
                            finish();
                        }else{
                            // Error in login
                            loginErrorMsg.setText("Username/Password Incorretti.");
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
 
        // Link to Register Screen
        btnLinkToRegister.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),
                        RegisterActivity.class);
                startActivity(i);
                finish();
            }
        });
    }
}

JSNOParser.java:
Codice (Java): [Seleziona]
package com.example.androidhive.library;
 
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 JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {
 
        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://miosito.it/joomla/configuration.php");
            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;
 
    }
}

UserFunction.java:
Codice (Java): [Seleziona]
package com.example.androidhive.library;
 
import java.util.ArrayList;
import java.util.List;
 
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
 
import android.content.Context;
 
public class UserFunctions {
     
    private JSONParser jsonParser;
     
    private static String loginURL = "http://miosito.it/joomla/";
    private static String registerURL = "http://miosito.it/joomla/";
     
    private static String login_tag = "login";
    private static String register_tag = "register";
     
    // constructor
    public UserFunctions(){
        jsonParser = new JSONParser();
    }
     
    /**
     * function make Login Request
     * @param username
     * @param password
     * */

    public JSONObject loginUser(String username, String password){
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", login_tag));
        params.add(new BasicNameValuePair("username", username));
        params.add(new BasicNameValuePair("password", password));
        JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
        // return json
        // Log.e("JSON", json.toString());
        return json;
    }
     
    /**
     * function make Login Request
     * @param name
     * @param email
     * @param password
     * */

    public JSONObject registerUser(String name, String username, String password){
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", register_tag));
        params.add(new BasicNameValuePair("name", name));
        params.add(new BasicNameValuePair("username", username));
        params.add(new BasicNameValuePair("password", password));
         
        // getting JSON Object
        JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
        // return json
        return json;
    }
     
    /**
     * Function get Login status
     * */

    public boolean isUserLoggedIn(Context context){
        DatabaseHandler db = new DatabaseHandler(context);
        int count = db.getRowCount();
        if(count > 0){
            // user logged in
            return true;
        }
        return false;
    }
     
    /**
     * Function to logout user
     * Reset Database
     * */

    public boolean logoutUser(Context context){
        DatabaseHandler db = new DatabaseHandler(context);
        db.resetTables();
        return true;
    }
     
}

Grazie in anticipo.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Connessione al database online
« Risposta #1 il: 12 Luglio 2013, 10:11:48 CEST »
0
la frase
Citazione
Mi servirebbe sapere perchè tale codice non mi permette di collegarmi e ricevere dati dal mio database online...
non aiuta a capire come aiutarti, è un po come se ti mandassero un sms con scritto: "Non mi si accende il pc, è un portatile"
Dovresti dire cosa non va e in caso di crash o errori postare il logcat
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline StefanoAl

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy sII
  • Sistema operativo:
    android 4.1.2
Re:Connessione al database online
« Risposta #2 il: 12 Luglio 2013, 16:42:01 CEST »
0
La compilazione avviene normalmente senza errori...solo che alla pressione del tasto login (id.btnLogin) l'app crasha e si chiude con l'arresto forzato.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Connessione al database online
« Risposta #3 il: 12 Luglio 2013, 17:16:20 CEST »
0
La compilazione avviene normalmente senza errori...solo che alla pressione del tasto login (id.btnLogin) l'app crasha e si chiude con l'arresto forzato.
Ripeto: in caso di crash o errori postare il logcat
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline StefanoAl

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy sII
  • Sistema operativo:
    android 4.1.2
Re:Connessione al database online
« Risposta #4 il: 13 Luglio 2013, 03:19:50 CEST »
0
Alla pressione del bottone "login"..
Logcat:
Codice (Text): [Seleziona]
07-13 01:06:48.893: E/JSON(1178): <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">n<html><head>n<title>500 Internal Server Error</title>n</head><body>n<h1>Internal Server Error</h1>n<p>The server encountered an internal error ornmisconfiguration and was unable to completenyour request.</p>n<p>Please contact the server administrator at n postmaster@condominiogestione.it to inform them of the time this error occurred,n and the actions you performed just before this error.</p>n<p>More information about this error may be availablenin the server error log.</p>n</body></html>n
07-13 01:06:48.912: E/JSON Parser(1178): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
07-13 01:06:48.982: E/AndroidRuntime(1178): FATAL EXCEPTION: main
07-13 01:06:48.982: E/AndroidRuntime(1178): java.lang.NullPointerException
07-13 01:06:48.982: E/AndroidRuntime(1178):     at com.example.androidhive.LoginActivity$1.onClick(LoginActivity.java:60)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.view.View.performClick(View.java:4204)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.view.View$PerformClick.run(View.java:17355)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.os.Handler.handleCallback(Handler.java:725)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.os.Looper.loop(Looper.java:137)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at android.app.ActivityThread.main(ActivityThread.java:5041)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at java.lang.reflect.Method.invokeNative(Native Method)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at java.lang.reflect.Method.invoke(Method.java:511)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-13 01:06:48.982: E/AndroidRuntime(1178):     at dalvik.system.NativeStart.main(Native Method)

Offline jonsnow81

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
Re:Connessione al database online
« Risposta #5 il: 15 Luglio 2013, 11:40:50 CEST »
0
Ciao, ho un problema simile, non sono ancora riuscito a risolverlo però il fatto è che il JSON che ti ritorna ti fa crashare il programma, se vedi nel logcat ti dice "<!DOCTYPE", bene questa è la prima parola che ritorna dal JSON, nel mio caso il problema è dovuto al fatto che nel server la classe COM che uso è stata disabilitata e quindi il JSON mi ritorna un fatal error che mi fa piantare tutto, quindi ti direi di controllare cosa ti comunica il dbremoto all'atto della connection, in base al messaggio che ti da probabilmente capirai qual'è il problema....

Post unito: 15 Luglio 2013, 11:42:29 CEST
Metti un breakpoint nella riga
Codice (Java): [Seleziona]
 BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
piu in sotto, dove appare sb vedrai la stringa completa di errore comunicata dal sito....
« Ultima modifica: 15 Luglio 2013, 11:42:29 CEST da jonsnow81, Reason: Merged DoublePost »

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Connessione al database online
« Risposta #6 il: 15 Luglio 2013, 11:53:28 CEST »
0
il tuo problema è molto semplice, NON ricevi un JSON:
Codice (XML): [Seleziona]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
 <head>
  <title>500 Internal Server Error</title>
 </head>
<body>
  <h1>Internal Server Error</h1>
  <p>The server encountered an internal error ornmisconfiguration and was unable to completenyour request.</p>
  <p>Please contact the server administrator at n postmaster@condominiogestione.it to inform them of the time this error occurred,n and the actions you performed just before this error.</p>
  <p>More information about this error may be availablenin the server error log.</p>
</body>
</html>
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia