PDA

Ver la Versión Completa : Post en php con android


ramon00
22/04/13, 15:45:19
Buenas necesito resolver otra duda a ver si alguien la sabe.
Tengo un script en php que entre otras cosas devuelve los datos que le envio , de la siguiente forma, si entro con un navegador en la direccion:
"http://www.pagina.com/script.php?img=imagen.jpg&res=M";
me muestra por pantalla el texto: "imagen.jpg M".
Ahora necesito hacer lo mismo con android, hacer una petición con los parametros img y res y leer la respuesta que devuelva el php, el código que tengo escrito para hacer esto es este:

public void enviarDatos(View v) {

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.pagina.com/carpeta1/carpeta2/script.php");

try {

List <NameValuePair> nameValuePairs = new ArrayList <NameValuePair> (2);
nameValuePairs.add(new BasicNameValuePair("img", "imagen"));
nameValuePairs.add(new BasicNameValuePair("res", "M"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);

InputStream is = response.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(20);

int current = 0;

while((current = bis.read()) != -1){
baf.append((byte)current);
}

/* Convert the Bytes read to a String. */
text = new String(baf.toByteArray());
result.setText(text);


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

pero me devuelve esto:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>403 Forbidden</title></head><body><h1>Forbidden</h1><p>You don't have permission to access /carpeta1/carpeta2/script.phpon this server.</p><hr><address>Apache/2.2.22 (Ubuntu) Server at www.pagina.com (http://www.pagina.com) Port 80</address></body></html>

Parece un problema de permisos , pero por otra parte si puedo hacer lo que quiero con el navegador(firefox). Gracias por leerlo.

rinxe
22/04/13, 16:26:17
Me paso algo parecido cuando me inicie en el servicio web. Me daba errores de permiso o algo similar.

Investigando me di cuenta que el script php de la conexion al servicio web estaba mal (donde indicas el USER, PASSWORD, SERVER). El server lo tube que poner de otra manera en vez de la direccion normal.

PD: Uso un dominio de 1&1 y ahi te explicaban como hacerlo para mi caso.

ramon00
22/04/13, 17:00:23
Buenas rinxe , gracias por contestar. No se si te entiendo bien.
el script.php basicamente tiene esto
<?php
$img=$_GET[img];
$res=$_GET[res];
...
?>
No utilizo user ni password desde la app android para hacer el post, ni tampoco desde el firefox, por ejemplo, simplemente escribo la direccion: "http://www.pagina.com/carpeta1/carpeta2/script.php?img=imagen&res=M"
y Enter.
¿Te refieres a que seguramente sea cambiar algo de aqui??
"httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); "

Gracias de nuevo y Saludos.

rinxe
22/04/13, 20:50:53
La verdad es que no entiendo mucho de estos temas, te comentaba eso por si te podia servir de ayuda pero ya veo que vas por otro lado.

He estado mirando algun ejemplo y creo que quieres hacer esto: http://codigoprogramacion.com/cursos/android/enviar-una-peticion-http-post-desde-android-a-aplicacion-web-php.html#.UXWFXEBdUuo

ramon00
26/04/13, 01:55:00
Buenas me he dado cuenta que lo que tengo que hacer es un GET, y no un POST, porque el script PHP hace GET. De todas formas lo he cambiado y me sigue apareciendo el mismo error:
...
<html><head><title>403 Forbidden</title></head><body><h1>Forbidden</h1><p>You don't have permission to access
...
Concretando, si accedo a la direccion por medio de un navegador como el firefox lo hago correctamente y se muestra lo que quiero, por ejemplo accedo a http://www.pagina.web.com/carpeta1/carpeta2/script.php y se muestra lo que dice el script.php.
Si accedo con un programita que he hecho asi rápido y simple en java tambien me accede y me muestra correctamente.
Si accedo por medio de la aplicacion android me da el error : You don't have permission to access.

Alguna idea???

rinxe
26/04/13, 11:18:33
Pues no queda otra, tiene que ser algo de la configuracion. El server apache supongo que estara instalado en tu pc, por eso te deja acceder desde el navegador o desde la aplicacion java.

He estado mirando un poco por google y me e encontrado con varios post similares a este: http://www.lawebdelprogramador.com/foros/Apache/577570-forYou_don-t_have_permission_to_access___on_this_s.html

Lo poco que he leido del tema, comentaban que si has instalado phpmyadmin te crea como un cortafuegos y hay que configurar algo para dejar acceder a ese server desde otra makina que no sea tu pc.

Haber si con algo de esto das con la clave para solucionar tu problema.

ramon00
26/04/13, 13:20:24
no , el server es de la universidad, y he revisado tener acceso a las carpetas y los archivos, si no , no podria acceder normalmente con un navegador como el firefox o con la aplicacion en java. Bueno garcias por el interes e intentar aclararlo, voy a seguir intentando cosas, Saludos.

rinxe
26/04/13, 15:45:17
Okk, un saludo y suerte !!

PD: ya ves que mas no puedo hacer, ;-)

mikau1802
30/04/13, 04:05:03
Hola, checa el servidor donde tienes el PHP, agarra la compu que este en otra red (que tenga Internet y trata de entrar al URL del archivo PHP, si te sale lo mismo significa que el servidor apache tiene problemas, puede ser:
a) Solo acepte direcciones locales (solo te deja entrar si desde la compu donde tienes instalado el servidor entrar) Si es esto tienes que configurarlo para que sea publico.
b) SI esta publicado pero el Dominio o IP del servidor no es accesible desde afuera, en este caso es mas complicado, lo único que puedes hacer es migrar tu servidor a otra red donde puedas controlar esas cosas o conectar tu android a la MISMA red donde esta el servidor para que lo pueda ver.