2010-04-08 17 views
31

Soy nuevo en la implementación de conexiones HTTPS en Android. Básicamente, estoy intentando conectarme a un servidor usando el org.apache.http.client.HttpClient. Creo que, en algún momento, tendré que acceder al almacén de claves de la aplicación para autorizar a mi cliente con una clave privada. Pero, por el momento, solo intento conectarme y ver qué pasa; Sigo recibiendo un error HTTP/1.1 400 Bad Request.Android HttpClient y HTTPS

Parece que no puedo entender nada a pesar de muchos ejemplos (ninguno de ellos parece funcionar para mí). Mi código se ve así (la constante BODY es XmlRPC):

private void connect() throws IOException, URISyntaxException{ 

    HttpPost post  = new HttpPost(new URI(PROD_URL)); 
    HttpClient client = new DefaultHttpClient(); 

    post.setEntity(new StringEntity(BODY)); 
    HttpResponse result = client.execute(post); 

    Log.d("MainActivity", result.getStatusLine().toString()); 

} 

Así que, bastante simple. Avísame si alguien tiene algún consejo. ¡Gracias!

Respuesta

16

Esto debería comenzar. Estoy usando básicamente lo mismo, excepto con ThreadSafeClientConnManager.

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(new Scheme("https", 
      SSLSocketFactory.getSocketFactory(), 443)); 

HttpParams params = new BasicHttpParams(); 

SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry); 

HttpClient client = new DefaultHttpClient(mgr, params); 
+2

Gracias por su rápida respuesta. De hecho, intenté un enfoque similar antes sin suerte; mismo error de solicitud incorrecta – harrisonlee

+0

Entonces el problema no es con HTTPS, es algo más. El código que pegué funciona para mí. – synic

+0

Solo para aclaración: parece que está utilizando org.apache.http.conn.ssl.SSLSocketFactory, que no es lo mismo que javax.net.ssl.SSLSocketFactory. ¿Es eso correcto? – Dalbergia

Cuestiones relacionadas