2016-03-02 3 views
11

Mon Api accepte l'application Content-Type/json comme en-têtes. J'ai réglé Header parfaitement comme mentionné dans Retrofit Docs.Retrofit-2 Content-Type Problème

@Headers("Content-Type: application/json") 
@POST("user/classes") 
Call<playlist> addToPlaylist(@Body PlaylistParm parm); 

Mais dans la demande LOGGUE EXPEDITEUR Content-Type txt/html.So comment je dois résoudre ce problème? Ce api fonctionne très bien dans POSTMAN enter image description here

enter image description here

+0

Je ne pense pas que ce soit un problème avec amélioration. Normalement, les sites Web renvoient les résultats en txt/html. Vous devriez interroger l'API avec quelque chose comme '? Format = json'. Vous pouvez simplement vérifier cela en ouvrant l'adresse URL directement dans le navigateur. –

+0

Veuillez publier la demande html et la demande de facteur. – Christopher

+0

@Christopher a mis à jour la question avec la demande de postier –

Répondre

2

Essayez:

@POST("user/classes") 
Call<playlist> addToPlaylist(
@Header("Content-Type") String contentType, 
@Body PlaylistParm parm); 
8

vous pouvez essayer un en dessous de mes solutions:

@POST("user/classes") 
Call<playlist> addToPlaylist(@Header("Content-Type") String content_type, @Body PlaylistParm parm); 

puis appelez

mAPI.addToPlayList("application/json", playListParam); 

Ou

Créer HttpClient objet

OkHttpClient httpClient = new OkHttpClient(); 
     httpClient.networkInterceptors().add(new Interceptor() { 
      @Override 
      public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { 
       Request.Builder requestBuilder = chain.request().newBuilder(); 
       requestBuilder.header("Content-Type", "application/json"); 
       return chain.proceed(requestBuilder.build()); 
      } 
     }); 

Puis ajouter à rénover objet

Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).client(httpClient).build(); 
+0

Merci pour votre réponse. J'ai essayé de demander en utilisant les deux façons, mais n'a pas fonctionné pour moi :( –

+0

pourriez-vous me fournir les données pour demander si cela ne vous dérange pas –

+0

https: //www.groopiesdev.com/api/v1/utilisateur/classes Autorisation de base ZXlKbGVIQWlPakUwTlRjd01EVTVNRE1zSW1Gc1p5STZJa2hUTWpVMklpd2lhV0YwSWpveE5EVTJPVEU1TlRBemZRLmV5SnBaQ0k2TnpKOS5wbExhZmNxVVBoVGZpV2prLXFDREQ2eXQwQ0tSdlc0R0c1eHJ2enRHNXBnOjE = l'application Content-Type/JSON { "UserID": 72 "classid": 38} –

0

peut-être vous avez besoin '/' et est préférable de ne pas changer le type de contenu par youself . comme ceci:

@POST("user/classes/") 
Call<playlist> addToPlaylist(@Body PlaylistParm parm); 
4

Essayez ceci pour Retrofit 1.9 et 2.0. Pour le type de contenu Json.

@Headers({"Accept: application/json"}) 
@POST("user/classes") 
Call<playlist> addToPlaylist(@Body PlaylistParm parm); 

Vous pouvez ajouter beaucoup d'autres i.e.

@Headers({ 
     "Accept: application/json", 
     "User-Agent: Your-App-Name", 
     "Cache-Control: max-age=640000" 
    })