Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

martinhocosta

Ajuda com Eclipse, Android, MySQL e PHP

Mensagens Recomendadas

martinhocosta

boas....

eu tenho um probema com o meu codigo e nao estou a conseguir exprimentar um toturial

tenho classes php na pasta www do servidor wamp e até ai lindamente consigo adicionar a base dados

na parte android tambem aparentente parece estar tudo bem mas, tenho o seguinte erro...

11-27 14:08:55.202: E/getpostresponse(337): result= <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

11-27 14:08:55.202: E/getpostresponse(337): <html><head>

11-27 14:08:55.202: E/getpostresponse(337): <title>403 Forbidden</title>

11-27 14:08:55.202: E/getpostresponse(337): </head><body>

11-27 14:08:55.202: E/getpostresponse(337): <h1>Forbidden</h1>

11-27 14:08:55.202: E/getpostresponse(337): <p>You don't have permission to access /droidlogin/acces.php

11-27 14:08:55.202: E/getpostresponse(337): on this server.</p>

11-27 14:08:55.202: E/getpostresponse(337): </body></html>

11-27 14:08:55.223: E/log_tag(337): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray

11-27 14:08:56.241: E/JSON(337): ERROR

11-27 14:08:56.261: E/onPostExecute=(337): err

podem-me audar a sair deste problema.

este é o meu login para a autenticação

package test.Droidlogin;
/*CREADO POR SEBASTIAN CIPOLAT*/
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import test.Droidlogin.library.Httppostaux;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Login extends Activity {
/** Called when the activity is first created. */

EditText user;
EditText pass;
Button blogin;
TextView registrar;
Httppostaux post;
// String URL_connect="http://www.scandroidtest.site90.com/acces.php";
String IP_Server="192.168.1.104";//IP DE NUESTRO PC
String URL_connect="http://"+IP_Server+"/droidlogin/acces.php";//ruta en donde estan nuestros archivos

boolean result_back;
private ProgressDialog pDialog;

@Override
public void onCreate(Bundle savedInstanceState) {

	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	post=new Httppostaux();

	user= (EditText) findViewById(R.id.edusuario);
	pass= (EditText) findViewById(R.id.edpassword);
	blogin= (Button) findViewById(R.id.Blogin);
	registrar=(TextView) findViewById(R.id.link_to_register);

	//Login button action
	blogin.setonclickListener(new View.onclickListener(){

		public void onclick(View view){

			//Extreamos datos de los EditText
			String usuario=user.getText().toString();
			String passw=pass.getText().toString();

			//verificamos si estan en blanco
			if( checklogindata( usuario , passw )==true){

				//si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros

			new asynclogin().execute(usuario,passw);							  


			}else{
				//si detecto un error en la primera validacion vibrar y mostrar un Toast con un mensaje de error.
				err_login();
			}

		}
														});

	registrar.setonclickListener(new View.onclickListener(){

		public void onclick(View view){

			//Abre el navegador al formulario adduser.html
			String url = "http://"+IP_Server+"/droidlogin/adduser.html";
			Intent i = new Intent(Intent.ACTION_VIEW);
			i.setData(Uri.parse(url));
			startActivity(i);				
									}			
															});

}

//vibra y muestra un Toast
public void err_login(){
	Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
	vibrator.vibrate(200);
	Toast toast1 = Toast.makeText(getApplicationContext(),"Error:Nombre de usuario o password incorrectos", Toast.LENGTH_SHORT);
	 toast1.show();		
}


/*Valida el estado del logueo solamente necesita como parametros el usuario y passw*/
public boolean loginstatus(String username ,String password ) {
	int logstatus=-1;

	/*Creamos un ArrayList del tipo nombre valor para agregar los datos recibidos por los parametros anteriores
	 * y enviarlo mediante POST a nuestro sistema para relizar la validacion*/
	ArrayList<NameValuePair> postparameters2send= new ArrayList<NameValuePair>();

				postparameters2send.add(new BasicNameValuePair("usuario",username));
				postparameters2send.add(new BasicNameValuePair("password",password));

	   //realizamos una peticion y como respuesta obtenes un array JSON
		  JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);

		  /*como estamos trabajando de manera local el ida y vuelta sera casi inmediato
		   * para darle un poco realismo decimos que el proceso se pare por unos segundos para poder
		   * observar el progressdialog
		   * la podemos eliminar si queremos
		   */
		SystemClock.sleep(950);

		//si lo que obtuvimos no es null
			if (jdata!=null && jdata.length() > 0){

				JSONObject json_data; //creamos un objeto JSON
				try {
					json_data = jdata.getJSONObject(0); //leemos el primer segmento en nuestro caso el unico
					 logstatus=json_data.getInt("logstatus");//accedemos al valor
					 Log.e("loginstatus","logstatus= "+logstatus);//muestro por log que obtuvimos
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}					

				//validamos el valor obtenido
				 if (logstatus==0){// [{"logstatus":"0"}]
					 Log.e("loginstatus ", "invalido");
					 return false;
				 }
				 else{// [{"logstatus":"1"}]
					 Log.e("loginstatus ", "valido");
					 return true;
				 }

		  }else{	//json obtenido invalido verificar parte WEB.
					 Log.e("JSON  ", "ERROR");
					return false;
		  }

}


//validamos si no hay ningun campo en blanco
public boolean checklogindata(String username ,String password ){

if	 (username.equals("") || password.equals("")){
	Log.e("Login ui", "checklogindata user or pass error");
return false;

}else{

	return true;
}

}		  

/*		CLASE ASYNCTASK
*
* usaremos esta para poder mostrar el dialogo de progreso mientras enviamos y obtenemos los datos
* podria hacerse lo mismo sin usar esto pero si el tiempo de respuesta es demasiado lo que podria ocurrir	
* si la conexion es lenta o el servidor tarda en responder la aplicacion sera inestable.
* ademas observariamos el mensaje de que la app no responde.	
*/

class asynclogin extends AsyncTask< String, String, String > {

	String user,pass;
	protected void onPreExecute() {
		//para el progress dialog
		pDialog = new ProgressDialog(Login.this);
		pDialog.setMessage("Autenticando....");
		pDialog.setIndeterminate(false);
		pDialog.setCancelable(false);
		pDialog.show();
	}

	protected String doInBackground(String... params) {
		//obtnemos usr y pass
		user=params[0];
		pass=params[1];

		//enviamos y recibimos y analizamos los datos en segundo plano.
		if (loginstatus(user,pass)==true){						
			return "ok"; //login valido
		}else{			
			return "err"; //login invalido						
		}

	}

	/*Una vez terminado doInBackground segun lo que halla ocurrido
	pasamos a la sig. activity
	o mostramos error*/
	protected void onPostExecute(String result) {

	   pDialog.dismiss();//ocultamos progess dialog.
	   Log.e("onPostExecute=",""+result);

	   if (result.equals("ok")){

			Intent i=new Intent(Login.this, HiScreen.class);
			i.putExtra("user",user);
			startActivity(i);

		}else{
			err_login();
		}

         }

	}

}

Editado por Rui Carlos
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Fugindo um bocado ao tópico, já pensas-te em trabalhar com KSOAP2?

Se fosse KSOAP2 até te podia ajudar, pois trabalho com isso diariamente.

ksoap2 !! demasiado fácil ... não dá pica :D


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
martinhocosta

tenho aqui uma duvida....

neste momento estou a utilizar

eclipse + Wamp Servidor + php + Mysql....

no php ta optimo 5*

mais mysql

mas no que diz respeito ao eclipse e depois de andar a pesquisar como posso ou o que o KSOAP2 pode ser resolver o meu problema

pois nos toturiais que li nenhum falava deste Ksoap2!!!

cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o ksoap2-android é uma biblioteca que que simplifica o consumo de webservices no android

o que perguntas não diz nada sobre uma dúvida em concreto ... afinal o que queres ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.