2017-07-25 2 views
0

Comment puis-je publier dans mon cas des informations de l'appareil Android à ma route api. Actuellement, je ne reçois aucune réponse dans mon moniteur android.Android Retrofit poster des informations à la base de données api

J'ai créé une classe de base RetrofitBuilder. j'ai créé un ApiService qui contient ceci:

@FormUrlEncoded 
@POST("device") 
Call<DeviceResponse> device(@Field("device_name") String device_name, 
          @Field("device_producer") String device_producer, 
          @Field("device_pixel_width") int device_pixel_width, 
          @Field("device_pixel_height") int device_pixel_height, 
          @Field("device_ratio_width") int device_ratio_width, 
          @Field("device_ratio_height") int device_ratio_height, 
          @Field("device_android_version") int device_android_version, 
          @Field("device_status") int device_status); 

un modèle de dispositif qui contient un constructeur de dispositif avec setter et getters.

Une classe DeviceResponse:

public class DeviceResponse { 

    List<Device> data; 

    public List<Device> getData() { 
     return data; 
    } 

} 

Et dans mon activité je l'appelle comme ceci:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

    tokenManager = TokenManager.getInstance(getSharedPreferences("prefs", MODE_PRIVATE)); 
    service = RetrofitBuilder.createServiceWithAuth(ApiService.class, tokenManager); 

      Integer id = null; 
      String device_name = "samsung"; 
      String device_producer = "apple"; 
      int device_pixel_width = 12312; 
      int device_pixel_height = 123; 
      int device_ratio_width = 12; 
      int device_ratio_height = 23; 
      char device_android_version = 6; 
      int device_status = 1; 

      call = service.device(device_name, device_producer, device_pixel_width, device_pixel_height, device_ratio_width, device_ratio_height, device_android_version, device_status); 

Répondre

2

Juste besoin d'ajouter une annotation @POST avec EndPoint comme

@FormUrlEncoded 
@POST("endPoint") 
Call<DeviceResponse> device(@Field("device_name") String device_name, 
         @Field("device_producer") String device_producer, 
         @Field("device_pixel_width") int device_pixel_width, 
         @Field("device_pixel_height") int device_pixel_height, 
         @Field("device_ratio_width") int device_ratio_width, 
         @Field("device_ratio_height") int device_ratio_height, 
         @Field("device_android_version") int device_android_version, 
         @Field("device_status") int device_status); 

Vérifiez cela pour plus d'informations: https://futurestud.io/tutorials/retrofit-send-data-form-urlencoded

+0

désolé si je me trompe, mais je n'ai un point final ou non? '@POST (" périphérique ")' – utdev

+0

si périphérique est votre point de terminaison que vous devez ajouter cela avec @POST annotation dans Retrofit –

+0

Désolé, j'ai oublié de copier cela – utdev

0

essayer d'ajouter @POST comme ça,

@FormUrlEncoded 
@POST("yourURLendpoint") 
Call<DeviceResponse> device(@Field("device_name") String device_name, 
          @Field("device_producer") String device_producer, 
          @Field("device_pixel_width") int device_pixel_width, 
          @Field("device_pixel_height") int device_pixel_height, 
          @Field("device_ratio_width") int device_ratio_width, 
          @Field("device_ratio_height") int device_ratio_height, 
          @Field("device_android_version") int device_android_version, 
          @Field("device_status") int device_status); 
+0

Désolé, j'ai un point de terminaison oublié de copier que – utdev

+0

ok .. tout ce que vous avez point de fin ajouter que dans @Post annotation –

+0

ok il est ajouté toujours pas de réponse ou que voulez-vous dire exactement? – utdev