|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
[ANDROID-JAVA-PHP-MYSQL] problema connessione
Ciao a tutti ragazzi!! ho il seguente problema: sto implementando un'applicazione per android che si connette ad un db MySql (presente su un server virtuale wamp) sfruttando il linguaggio side-Server PHP. Se utilizzo l'emulatore di Eclipse funziona tutto bene ma se collego lo smartphone tramite usb e lo utilizzo come emulatore della mia applicazione, ecco che ho problemi di connessione col DB. Come mai ?
__________________
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Non è ben chiaro come avviene la comunicazione. PHP come c'entra?
Hai creato un'app che si connette, via socket, al dbms o l'app si connette ad un webservice in php che, a sua volta, si connette al dbms? |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Quote:
__________________
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Codice:
InputStream is = null;
ArrayList<NameValuePair> querySend = new ArrayList<NameValuePair>();
//the query to send
querySend.add(new BasicNameValuePair("querySend",query));
querySend.add(new BasicNameValuePair("pivacf",pivacf));
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2//Android/indexPag.php");
httppost.setEntity(new UrlEncodedFormEntity(querySend));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Una normale POST quindi.
A questo punto o il firewall sul tuo pc blocca l'accesso dal telefono o 10.0.2.2 non è l'ip giusto ( ma non credo ). Potrebbe pure essere che il telefono impedisce all'applicazione di inviare pacchetti tcp ( ma lo ritengo poco probabile visto che sei in modalità debug ). |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Quote:
__________________
|
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Un'app che si connette direttamente al dbms necessita che il dbms sia in ascolto su tutte le interfacce di rete ( e non solo la loopback ), il che genera possibili problemi di sicurezza. D'altro canto, dover intermezzare con degli script php potrebbe essere vista come una soluzione poco elegante. Però se i colossi dell'IT usano interfacciare i loro dbms tramite servlets et similia, non vedo perchè non lo possa fare tu. Così facendo il servizio server-side diventa indipendente da qualsiasi client, usa un'api standard per comunicare con i client e può essere riciclato in tanti altri progetti. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
infatti ho pensato di rendere il client il piu' indipendente possibile e far assumere le responsabilita' solo al server ..e poi php si interfaccia benissimo con mysql .. mi sto trovando molto bene per come sto implementando il tutto .. tornando al problema iniziale non so se le cause che mi hai proposto possano essere quelle. Con l'emulatore va tutto ok .. quando collego lo smartphone tramite usb e inserisco username e password nella mia schermata dell'applicazione e quindi vado a verificare se l'utente è registrato per poter utilizzare l'applicativo, mi compare l'alert (creato sempre da me) : utente non registrato... mi sembra tutto cosi' strano ....
__________________
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Controlla cose viene effettivamente passato nella variabile $_POST.
Il sospetto è che android possa fare qualche tipo di preprocessing prima di inviare il form ( tipo convertire in utf-8 e cose simili ) e quindi lo script php si confonde. |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Quote:
Codice:
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();
result=sb.toString();
result = result.trim();
String temp = result.substring(result.length()-4,result.length());
if (!(temp.equals("null"))){
try {
JSONArray jsonArray = new JSONArray(result);
if (arrayString != null){
for (int i = 0 ; i < arrayString.length;i++){
JSONObject jsonObject = jsonArray.getJSONObject(0);
v.add(jsonArray.getJSONObject(0).getString(arrayString[i]));}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}catch(Exception e){
Log.e("log_tag", "Error converting result: "+e.toString());
}
Log.i("SendQUERY", result);
return v;
}
__________________
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
E il login? Come avviene? Se compare l'alert che dice utente non registrato, può essere un problema di login. Il cookie usato per tracciare la sessione viene trasmesso?
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
il codice php ce l'ho in ufficio
ps cmq è una semplice select ..e il file php invia un jsonarray che viene tradotto in una listalinkata dal file java che contiene i risultati(ho fatto na genialata insomma XD )
__________________
Ultima modifica di Tony Hak : 22-05-2012 alle 22:13. |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Comparendoti quell'alert, è logico pensare che il problema sia nella procedura di login. Difficile dire perchè sull'emulatore funziona e sul device reale no. |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Quote:
__________________
|
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
In questo caso puoi pure controllare che l'array json restituito sia effettivamente quello che ci si aspettava.
Se non lo è o la query non ha funzionato o l'app ha inviato dati non corretti allo script. |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
Quote:
__________________
|
|
|
|
|
|
|
#18 | |||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quote:
Quote:
Secondo me devi rivedere il disegno del tuo sistema nel complesso. La parte php deve richiedere una qualche forma di autenticazione ed esporre solo metodi specifici, non un generico "ExecuteQuery". |
|||
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 1661
|
buongiorno! sono in ufficio e ti incollo il log dell'errore
05-23 09:48:57.259: E/log_tag(5457): Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused 05-23 09:48:57.259: E/log_tag(5457): Error converting result: java.lang.NullPointerException grazie per l'aiuto !
__________________
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
o è il firewall o c'è qualcosa che non va nella logica che gestisce l'autenticazione |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:40.




















