Tengo que usar HTTPS para enviar solicitudes POST a un servidor (utilizando un certificado autofirmado). Así es como lo hago:HTTPS y emisión de certificado autofirmado
HttpClient httpClient = getHttpClient();
for (int i = 0; i < PARAMS.length && !mHttpPost.isAborted(); ++i) {
mHttpPost.setURI(URI.create(mUri + "/" + PARAMS[i].getPath()));
mHttpPost.setEntity(new UrlEncodedFormEntity(PARAMS[i].getContents(), HTTP.UTF_8));
HttpResponse response = httpClient.execute(mHttpPost);
[...]
}
Con getHttpClient() se define de la siguiente manera:
public static DefaultHttpClient getHttpClient() {
DefaultHttpClient client = null;
// Setting up parameters
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "utf-8");
params.setBooleanParameter("http.protocol.expect-continue", false);
// Setting timeout
HttpConnectionParams.setConnectionTimeout(params, TIMEOUT);
HttpConnectionParams.setSoTimeout(params, TIMEOUT);
// Registering schemes for both HTTP and HTTPS
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
registry.register(new Scheme("https", sslSocketFactory, 443));
// Creating thread safe client connection manager
ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry);
// Creating HTTP client
client = new DefaultHttpClient(manager, params);
return client;
}
pero me da un "Certificado no seguro servidor" excepción. Sé que ya se han publicado varias preguntas sobre los certificados autofirmados, pero ninguno funcionó para mí ...
¿Alguien sabe cómo hacerlo?
Algunos detalles: Estoy trabajando con API nivel 4 (Android 1.6) en emulador.
Hola, sé que esto es un post hace mucho tiempo. Pero actualmente estoy atascado con esta conexión HTTPS. ¿Cuáles son los pasos que debo hacer antes de poder pasar en cualquier sitio seguro HTTPS? –
Esta solución es realmente peligrosa; está descartando los beneficios de seguridad de usar HTTPS (su código confiará ciegamente en certificados incorrectos). – Brian