Retrofit 2 La solicitud POST multipart envía cotizaciones extra a PHP

Con Retrofit 2.0.1, hay una función de llamada en mi interfaz de API definida en la aplicación para Android:

@Multipart @POST("api.php") Call<ResponseBody> doAPI( @Part("lang") String lang, @Part("file\"; filename=\"image.jpg") RequestBody file ); 

Puedo enviar la solicitud como esta:

Llamada call = service.doAPI ("eng", imageFile);

Donde imageFile es un RequestBody creado con un objeto File . La parte de la imagen de subida no tiene ningún problema, mientras que la @Part("lang") String lang la @Part("lang") String lang del @Part("lang") String lang consiguió cotizaciones adicionales en servidor.

En el lado de PHP, se escribe como sigue:

 $lang = trim($_POST['lang']); 

Que devuelve "eng" . ¿Por qué hay una cita doble extra rodeada de la cadena?

Por supuesto puedo quitar las cotizaciones dobles de arrastre y de salida, pero es extraño hacerlo


Problema relacionado: https://github.com/square/retrofit/issues/1210

Para su problema, utilice como documentación

Escalares (primitivos, encasillados y String): com.squareup.retrofit2: convertidor-escalares

Por lo tanto, agregar la compile 'com.squareup.retrofit2:converter-scalars:2.0.1' en el archivo build.gradle

Entonces…

 Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL_BASE) .addConverterFactory(ScalarsConverterFactory.create()) //.addConverterFactory(GsonConverterFactory.create()) .build(); 

¡Espero eso ayude!

  • Retrofit - Solicitud de varias partes: El parámetro "archivo" de MultipartFile no está presente
  • NoClassDefFoundError: Resolución fallida de: Lokhttp3 / internal / Platform
  • Prueba de unidad de Android con Retrofit2 y Mockito o Robolectric
  • ¿Cómo hacer una solicitud de POST utilizando retrofit 2?
  • Retrofit 2 con sólo datos de formulario
  • ¿Cómo pasar el enum personalizado en @Query a través de Retrofit?
  • Falló el socket OkHttp3: EMFILE (Demasiados archivos abiertos)
  • Encadenamiento de solicitudes en Retrofit + RxJava
  • Renovación de la referencia $ ref de objeto deserializante de JSON a su copia original
  • Retrofit2 ¿Datos de formulario codificados estáticos?
  • Retrofit 2 (en Android) después de la implementación, ¿Dónde están mis elementos JSON?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.