2010-06-22 17 views
5

Actualmente estoy intentando autenticarme con un servidor a través de una llamada a http. El código proporcionado a continuación funciona cuando se compila en un proyecto de Java. Devolviendo el token correcto al programa. Sin embargo, cada vez que trato de implementar el mismo código en Android no obtengo un token devuelto a través de la llamada Obtener.Solicitud de Https, autenticación en Android

En Android estoy devolviendo inputLine en una función, sin embargo inputLine es siempre una cadena vacía.

system.out.println() imprime el token devuelto.

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import javax.net.ssl.HttpsURLConnection; 

public class JavaHttpsExample 
{ 

public static void main(String[] args) 
{ String inputLine = new String(); 
    try 
    { 
    String httpsURL = "https://the url"; 
    URL myurl = new URL(httpsURL); 
    HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection(); 
    InputStream ins = con.getInputStream(); 
    InputStreamReader isr=new InputStreamReader(ins); 
    BufferedReader in =new BufferedReader(isr); 

    inputLine = in.readLine(); 

    System.out.println(inputLine); 

    in.close(); 


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

gracias por su ayuda !!!

+0

se puede ver lo que está pasando en el lado del servidor? Registros de acceso, códigos de estado, etc. –

+0

lamentablemente no, el servidor está alojado fuera de – Mango

+0

Cuando ejecuto el código en Android, parece que siempre falla en la línea "InputStream ins - con.getInputStream();" arroja la IOException. Sin embargo, esto no ocurre cuando estoy ejecutando el código como una aplicación Java. – Mango

Respuesta

2

Probablemente no haya agregado el Permiso de Internet a sus proyectos AndroidManifest.xml. Si es así, añada la siguiente línea como un hijo del nodo <manifest/>:

<uses-permission android:name="android.permission.INTERNET" /> 
2

estoy usando POST y FormEntity para recuperar datos desde el servidor (como la autenticación), y nunca he tenido ningún problema:

final String httpsURL = "https://the url"; 
final DefaultHttpClient client = new DefaultHttpClient(); 
final HttpPost httppost = new HttpPost(httpsURL); 

//authentication block: 
final List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); 
nvps.add(new BasicNameValuePair("userName", userName)); 
nvps.add(new BasicNameValuePair("password", password)); 
final UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 
httppost.setEntity(p_entity); 

//sending the request and retrieving the response: 
HttpResponse response = client.execute(httppost); 
HttpEntity responseEntity = response.getEntity(); 

//handling the response: responseEntity.getContent() is your InputStream 
final InputSource inputSource = new InputSource(responseEntity.getContent()); 
[...] 

tal vez se encuentra este útil

+0

esto parece muy directo para SSL, me sorprende que no haya uso de SchemeRegistry para registrar el esquema "https" como lo hizo esta persona: http://stackoverflow.com/questions/2603691/android-httpclient-and-https/2603786 # 2603786 –

Cuestiones relacionadas