2016-03-02 16 views
11

मेरा एपीआई हेडर्स के रूप में सामग्री-प्रकार एप्लिकेशन/जेसन स्वीकार कर रहा है। मैंने हेडर को पूरी तरह से रेट्रोफिट डॉक्स में उल्लिखित सेट किया है।रेट्रोफिट -2 सामग्री-प्रकार समस्या

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

लेकिन अनुरोध लॉग में यह सामग्री-प्रकार txt/html लौटा रहा है। तो मुझे इस समस्या को कैसे ठीक करना चाहिए? यह API डाकिया में ठीक काम करता है enter image description here

enter image description here

+0

मुझे नहीं लगता कि यह रेट्रोफिट साथ कोई समस्या है। आम तौर पर वेबसाइटें txt/html में परिणाम लौटाती हैं। आपको एपीआई को '? Format = json' जैसी चीज़ से पूछना चाहिए। आप ब्राउज़र में सीधे एपीआई यूआरएल खोलकर इसे देख सकते हैं। –

+0

कृपया एचटीएमएल अनुरोध और डाकिया अनुरोध पोस्ट करें। – Christopher

+0

@ क्रिस्टोफर ने पोस्टमैन अनुरोध –

उत्तर

2

प्रयास करें:

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

तुम मेरे समाधान नीचे में एक कोशिश कर सकते हैं:

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

तो फोन

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

या

बनाएं HttpClient वस्तु

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()); 
      } 
     }); 

फिर वस्तु

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

आपके उत्तर के लिए धन्यवाद। मैंने दोनों तरीकों का उपयोग करने का अनुरोध करने का प्रयास किया, लेकिन मेरे लिए काम नहीं किया :( –

+0

क्या आप मुझे अनुरोध करने के लिए डेटा प्रदान कर सकते हैं अगर आपको –

+0

https: //www.groopiesdev दिमाग नहीं है।com/API/v1/उपयोगकर्ता/वर्गों प्राधिकरण बेसिक ZXlKbGVIQWlPakUwTlRjd01EVTVNRE1zSW1Gc1p5STZJa2hUTWpVMklpd2lhV0YwSWpveE5EVTJPVEU1TlRBemZRLmV5SnBaQ0k2TnpKOS5wbExhZmNxVVBoVGZpV2prLXFDREQ2eXQwQ0tSdlc0R0c1eHJ2enRHNXBnOjE = सामग्री प्रकार आवेदन/json { "उपयोगकर्ता id": 72, "ClassID": 38} –

0

हो सकता है आप की जरूरत है '/' और सबसे अच्छा है अपने आप से सामग्री प्रकार परिवर्तित करने के लिए नहीं पुनः स्थापित करने के लिए जोड़ । सिर्फ इस तरह:

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

रेट्रोफिट 1.9 और 2.0 के लिए यह प्रयास। जेसन सामग्री प्रकार के लिए।

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

आप कई और अधिक यानी जोड़ सकते हैं

@Headers({ 
     "Accept: application/json", 
     "User-Agent: Your-App-Name", 
     "Cache-Control: max-age=640000" 
    }) 
संबंधित मुद्दे