Autenticación HTTP básica en los teléfonos Android a Rails Server
Estoy intentando conectarme a un servidor de aplicaciones de Rails que requiere autenticación. Estoy utilizando el cliente Jakarta HTTP para Java en una aplicación de escritorio y funciona 100%. Pero cuando se ejecuta exactamente el mismo código en el emulador de Android, obtengo una IOException.
Aquí está el código, y si alguien me podría ayudar a averiguar por qué lanza la IOException que sería muy apreciada!
- Guardar en SharedPreferences desde DialogPreference personalizado
- ¿Cómo puedo obtener el patrón predeterminado de formato de fecha y hora?
- Box2D rotar un objeto, ¿cómo?
- ¿Puedo obtener propiedades definidas en "gradle.properties" en JAVA STATEMENT?
- Voltear una imagen de mapa de bits horizontal o verticalmente
private boolean login() { String username, password; DefaultHttpClient client; AuthScope scope; Credentials myCredentials; CredentialsProvider provider; HttpEntity entity; String line; BufferedReader reader; InputStream instream; //Declare & Create the HTTP Client client = new DefaultHttpClient(); //Create our AuthScope scope = new AuthScope("10.19.9.33", 3000); username = "admin" password = "pass" //Set Credentials myCredentials = new UsernamePasswordCredentials( username, password ); //Set Provider provider = new BasicCredentialsProvider(); provider.setCredentials(scope, myCredentials); //Set Credentials client.setCredentialsProvider( provider ); String url = "http://10.19.9.33:3000/users/show/2"; HttpGet get; //Tell where to get get = new HttpGet( url ); HttpResponse response; try { response = client.execute( get ); entity = response.getEntity(); /* Check to see if it exists */ if( entity != null ) { instream = entity.getContent(); try { reader = new BufferedReader(new InputStreamReader(instream)); line = reader.readLine(); if( line.equals( "HTTP Basic: Access denied.") ) return false; while ( line != null ) { // do something useful with the response System.out.println(line); line = reader.readLine(); } return true; } catch (IOException ex) { // In case of an IOException the connection will be released // back to the connection manager automatically throw ex; } catch (RuntimeException ex) { // In case of an unexpected exception you may want to abort // the HTTP request in order to shut down the underlying // connection and release it back to the connection manager. get.abort(); throw ex; } finally { // Closing the input stream will trigger connection release instream.close(); } } } catch( ClientProtocolException cp_ex ) { } catch( IOException io_ex ) { } return false; }
- RxJava / RxAndroid - maneja varios cambios de EditText
- ¿Cómo obtener el código del país (código de llamada) en android?
- Combo de IdentityHashMap y WeakHashMap
- Android: falló la conversión a formato Dalvik: no se pudo ejecutar dex: null
- ¿Cómo agregar un widget a la pantalla principal de Android desde mi aplicación?
- Cambiar la configuración de WiFi en Android 5 (L) mediante programación
- File.exists () devuelve false cuando el archivo existe
- HTTP Status 403 - No válido CSRF Token 'null' se encontró en el parámetro de solicitud
La razón por la que siguió activando la excepción IOException fue porque el archivo de manifiesto no dio los derechos de aplicación a Internet
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Estoy usando HttpPost para este tipo de tarea, y nunca tuve ningún problema:
[...] DefaultHttpClient client = new DefaultHttpClient(); HttpPost httppost = new HttpPost(LOGIN_SERVLET_URI); List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(); params.add(new BasicNameValuePair("userName", userName)); params.add(new BasicNameValuePair("password", password)); UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(params, HTTP.UTF_8); httppost.setEntity(p_entity); HttpResponse response = client.execute(httppost); HttpEntity responseEntity = response.getEntity(); [...]
Tal vez esto te ayuda
- Android virtual device manager (avd) no funciona en el último adt v21
- Documentación multilingüe de Android Sdk