¿Cómo publicar una solicitud de HTTPS utilizando Retrofit?
Construyo un restAdapter por esto:
return new RestAdapter.Builder() .setEndpoint("https://www.xyz.com/") .build() .create(SafeUserApi.class);
Entonces en el SafeUserApi.class (que es una interfaz) tengo:
- ¿Utilizando appMobi puedo crear aplicaciones para Android y aplicaciones para iPhone de forma gratuita (además de los costos de Google / Apple)?
- Generar errores con XML a la dependencia del convertidor de objetos de java en build.gradle para retroadaptación
- Detección de presencia de FPU en Android
- ¿por qué se muestra el mensaje no registrado de la aplicación de Android al iniciar sesión con gmail en la aplicación android?
- ¿Cómo cambio entre el GPS y el proveedor de la red?
public interface SafeUserApi { @POST("/api/userlogin") void getUserLogin(@Body UserserLogin userLogin, Callback<LoginResult> cb); }
Pero no funciona. ¿Me he perdido algo?
Lo intenté con Postman y funciona. Pero en mi dispositivo no lo hace.
Tengo estas cuatro librerías importadas:
compile files('libs/okhttp-2.1.0.jar') compile files('libs/okhttp-urlconnection-2.1.0.jar') compile files('libs/okio-1.0.1.jar') compile files('libs/retrofit-1.8.0.jar')
- "Servicios del sistema no disponibles para Actividades antes de onCreate ()" ¿Mensaje de error?
- Implicaciones de la compatibilidad con varios usuarios de Android (nueva en 4.2) para el modelo de datos del lado del servidor (por ejemplo, android_id)
- Parametrización de Android @Headers
- Android Fused Location API - cómo utilizar PRIORITY_BALANCED_POWER_ACCURACY y PRIORITY_HIGH_ACCURACY en una aplicación?
- Lista de lecturas <Item> con retrofit de XML API
- El éxito de Retrofit.Callback () y el fallo () en caso de dos implementaciones de interfaz en la misma Actividad
public static OkHttpClient getUnsafeOkHttpClient() { try { // Create a trust manager that does not validate certificate chains final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted( java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[0]; } } }; // Install the all-trusting trust manager final SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); // Create an ssl socket factory with our all-trusting manager final SSLSocketFactory sslSocketFactory = sslContext .getSocketFactory(); OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient = okHttpClient.newBuilder() .sslSocketFactory(sslSocketFactory) .hostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER).build(); return okHttpClient; } catch (Exception e) { throw new RuntimeException(e); } }
Esto debería funcionar:
Retrofit retrofit = new Retrofit.Builder() .baseUrl(YOUR_HTTPS_URL) .setClient(getUnsafeOkHttpClient()) .build();
public interface SafeUserApi { @FormUrlEncoded @POST("/api/userlogin") void getUserLogin(@Field("parm1")UserserLogin userLogin, Callback<LoginResult> cb); }
Aquí parm1 es el parámetro POST que va a pasarlo al servidor. Esto resolverá su problema