No me funciona el j2me con el metodo post

Moderador: iuav

Temas relacionados: Java, JavaBeens, JBuilder, JDK, Applets, etc

No me funciona el j2me con el metodo post

Notapor atp » Mié Nov 22, 2006 5:54 am

verán, yo estoy haciendo un aplicacion en j2me. Hasta ahora siempre habia usado el método GET para las conexiones httpConnection, pero ahora tengo que usar el metodo POST, pero me está resultando imposible, y se supone que tiene que ser igual de facil.

Este es el codigo de java que tengo:

DataOutputStream dos = null;
String url = "http://localhost/loginp.php";
String params = "username=antonio&contrasenia=atp";
c = (HttpConnection)Connector.open(url);
c.setRequestProperty("Content-Language","es-ES");
c.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
c.setRequestProperty("Content-Length", Integer.toString(params.length()));

c.setRequestMethod(HttpConnection.POST);


dos = c.openDataOutputStream();
byte[] request_body = params.getBytes();
for (int i = 0; i < request_body.length; i++){
dos.writeByte(request_body[i]);
}
dos.flush();
dos.close();


Lo que pasa es que la pagina login.php no me coge los parametros.

He intentado de todo:

1) Poniendo en url la interrogación al final ("http://localhost/loginp.php"?)
2) Poniendo en el constructor como segundo parametro (Connector.READ_WRITE).
3)Cambiando el trozo de codigo que escribe los parametros por este otro:
OutputStream os = c.openOutputStream();
os.write(params.getBytes());
os.flush();
os.close();

Pero no me funciona,

¿Alguien sabe donde puede estar el posible error?

Gracias de antemano
atp
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 133
Registrado: Mar Ene 03, 2006 3:52 pm


OTRA ACLARACION

Notapor atp » Mié Nov 22, 2006 6:11 am

por si sirve de aclaracion, el codigo de loginp.php es el siguiente:


<?php
$host ="localhost";
$database = "TicketEasyBD";
$dbusername = "root";
$dbpassword = "";
$x = mysql_connect($host,$dbusername,$dbpassword);
$con = mysql_select_db($database,$x);
$sql = "SELECT * FROM cliente WHERE username = ".'\''.$_POST["username"].'\''." AND contrasenia = ".'\''.$_POST["contrasenia"].'\';';
print $sql;
$res_id = mysql_query($sql);

if($a = mysql_fetch_array($res_id) ){
echo "OK";
}
else{
echo "FALLO";
}

mysql_free_result($res_id);
mysql_close($x);
?>

Y lo que se me mestra en el movil es:

SELECT * FROM cliente WHERE username = '' AND contrasenia = '';FALLO

Es decir, que no se toman bien los parametros en la pagina php con $_POST.

Este mismo ejemplo lo tengo hecho con GET y sí funciona, pero necesito que sea con POST.
atp
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 133
Registrado: Mar Ene 03, 2006 3:52 pm


Re: OTRA ACLARACION

Notapor latindev » Vie Nov 24, 2006 7:30 pm

Atp.

las variables POST no funcionan de la misma manera... ese tipo de variables no se incluyen en la peticion (con pagina.php?variable=valor)

Sino van como escondidas dentro de la cabecera...
Imagen
Avatar de Usuario
latindev
Administrador
Administrador
 
Mensajes: 1062
Registrado: Lun Jun 02, 2003 8:30 pm
Ubicación: Peru

Variables en un POST

Notapor onlytk » Sab Nov 25, 2006 10:29 am

Hola, ..... la verdad no domino java pero si hecho algunos codigos para obtener resultados enviando cabeceras con GET y POST, lo más practico y recomendable es primero instalarte un Interceptor de cabeceras para que puedas ver como se esta enviando la cabecera de tu pagina web, yo uso el HTTP Interceptor, ahi obtendras todo lo ke necesitas.

Luego simplemente envias en tu codigo la misma cabecera cambiando tus parametros para obtener tus resultados, ejem:

Codigo en PHP:
Código: Seleccionar todo
  1.  

  2. $url_sock = @fsockopen($host,80,&$errno,&$errstr);

  3.  

  4. $reqheader = "POST /login.php HTTP/1.0\r\n"

  5.     ."Accept: */*\r\n"

  6.     ."Referer: http://localhost/\r\n"

  7.     ."Accept-Language: es-pe\r\n"

  8.     ."Content-Type: application/x-www-form-urlencoded\r\n"

  9.     ."Connection: Close\r\n"

  10.     ."User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)\r\n"

  11.     ."Host: localhost\r\n"

  12.     ."Content-Length: 25\r\n"

  13.     ."Pragma: no-cache\r\n"

  14.     ."\r\n"

  15.     ."user=usuario&accion=Login";

  16.  

  17.     @fputs($url_sock, $reqheader);

  18.    

  19.     $str_html = "";

  20.    

  21.     while (!feof($url_sock)) {

  22.         $str_html .= fgets($url_sock);

  23.     }

  24.  

  25.     echo $str_html;

  26.  



Como veras esa es la forma en que envias toda la cabecera para luego obtener el html de respuesta.

En tu codigo me parece ke haces lo mismo pero debes tener kuidado en los saltos de linea, y la referencia puesto que por esos detalles hay veces no se obtiene los resultados esperados.
El Mejor Blog Underground http://www.onlytk.tk
Avatar de Usuario
onlytk
Usuario Activo
Usuario Activo
 
Mensajes: 28
Registrado: Lun Oct 17, 2005 9:41 pm

Re: No me funciona el j2me con el metodo post

Notapor latindev » Sab Nov 25, 2006 7:03 pm

Creo que encontré una solucion:

en la pagina siguiente:

http://developers.sun.com/techtopics/mo ... /HTTPPost/

Lo que quiere hacer es abrir una pagina con el nombre http://www.mysite.com/login.jsp (puede ser php tambien) y enviar las variables del logueo mediante el metodo POST.

Código: Seleccionar todo
  1. POST /login.jsp HTTP/1.1

  2. Host: www.mysite.com

  3. User-Agent: Mozilla/4.0

  4. Content-Length: 27

  5. Content-Type: application/x-www-form-urlencoded

  6.  

  7. userid=joe&password=guessme



Nota que en la ultima linea estan las variables. Entonces el codigo java que sugiere la pagina es :

Nota el uso de la variable rawData.

Código: Seleccionar todo
  1.         HttpConnection conn = null;

  2.         String url = "http://www.mysite.com/login.jsp";

  3.         String agent = "Mozilla/4.0";

  4.         String rawData = "userid=joe&password=guessme";

  5.         String type = "application/x-www-form-urlencoded";

  6.  

  7.         String encodedData = encode( rawData ); // user-supplied

  8.  

  9.         try {

  10.                 conn = (HttpConnection) Connector.open( url );

  11.                 conn.setRequestMethod( HttpConnection.POST );

  12.                 conn.setRequestProperty( "User-Agent", agent );

  13.                 conn.setRequestProperty( "Content-Type", type );

  14.                 conn.setRequestProperty( "Content-Length",

  15.                                                 encodedData.length() );

  16.  

  17.                 OutputStream os = conn.openOutputStream();

  18.                 os.write( encodedData.getBytes() );

  19.    

  20.                 int rc = conn.getResponseCode();

  21.                 ... // process it

  22.         }

  23.         catch( IOException e ){

  24.                 // handle the error here

  25.         }

  26.  

  27.  




Saludos.
Imagen
Avatar de Usuario
latindev
Administrador
Administrador
 
Mensajes: 1062
Registrado: Lun Jun 02, 2003 8:30 pm
Ubicación: Peru


    

Volver a Java

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados