Retrofit 2 con sólo datos de formulario

Estoy intentando hacer la petición del POSTE usando el Retrofit 2. El tipo de la petición es el form-data NO application/x-www-form-urlencoded .

Estoy publicando solamente los datos no los archivos en la petición y la respuesta está en la forma de JSON.

He intentado @FormUrlEncoded, @Multipart pero no está funcionando.

He intentado siguiente solicitud

1. Primer intento

 @FormUrlEncoded @POST("XXXX") Call<PlanResponse> getPlanName(@Field(Constants.ACTION_ID) String actionId, @Field(Constants.OFFER_CODE) String offerCode); 

2. Segundo intento

 @Headers({"Content-Type: multipart/form-data","Content-Type: text/plain"}) @FormUrlEncoded @POST("XXXX") Call<PlanResponse> getPlans(@Body @FieldMap(encoded = false) Map<String, String> data); 

3. Tercer intento

 @Headers("Content-Type: multipart/form-data") @Multipart @POST("XXXX") Call<PlanResponse> myPlans(@Part(Constants.ACTION_ID) String actionId, @Part(Constants.OFFER_CODE) String offerCode); 

Sólo estoy recibiendo el cuerpo como nulo . Está trabajando con el POSTMAN.

También he buscado datos de form-data y application/x-www-form-urlencoded y encontré que si los datos son binarios, entonces use form-data y si los datos son ASCII entonces use application/x-www-form-urlencoded

Estoy tratando de encontrar ¿Es el formato de datos no es compatible con el Retrofit?

Solicitud de POSTMAN

 Cache-Control: no-cache Postman-Token: XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX Content-Type: multipart/form-data; boundary=---- WebKitFormBoundaryXXXXXXXXXXXX ----WebKitFormBoundaryXXXXXXXXXXXX Content-Disposition: form-data; name="actionId" 1000 ----WebKitFormBoundaryXXXXXXXXXXXX Content-Disposition: form-data; name="offerCode" MYCODE ----WebKitFormBoundaryXXXXXXXXXXXX 

Puedo solamente agregar el código generado HTTP cortado de POSTMAN

En retrofit 2.0 para realizar la solicitud POST como anteriormente, debe utilizar el tipo RequestBody para su parámetro como este.

 @Multipart @POST("XXXX") Call<PlanResponse> myPlans(@Part(Constants.ACTION_ID) RequestBody actionId, @Part(Constants.OFFER_CODE) RequestBody offerCode); 

Y aquí cómo obtener requestBody de String.

 String somevalue = "somevalue"; RequestBody body = RequestBody.create(MediaType.parse("text/plain"), somevalue); 
  • Android Retrofit 2 + RxJava: escuchar stream sin fin
  • Retrofit 2 @path Vs @query
  • Renovación de la referencia $ ref de objeto deserializante de JSON a su copia original
  • Retrofit 2.0 cómo eliminar?
  • ¿Cómo obtener la url de la solicitud en retrofit 2.0 con rxjava?
  • ¿Es posible mostrar la barra de progreso cuando se descarga a través de Retrofit 2 Asynchronous?
  • Retrofit2 y kotlin
  • Patrones de diseño de Retrofit de Android
  • Retrofit 2 Método RequestBody writeTo () llamado dos veces
  • Cómo enviar JSON OBJECT como parámetro en Retrofit 2 (Android)
  • Comprobación de Internet, dónde colocar al usar MVP, RX y Retrofit
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.