2016-08-29 11 views
6

इससे पहले कि मैं इस प्रश्न को पोस्ट करने से पहले, मैंने इंटरफेस विधि से ऊपर @Multipart जोड़ने की कोशिश की है और स्टैक ओवरफ्लो में खोज अभी भी मेरी समस्या के समान नहीं मिल सकता है।@ पार्ट पैरामीटर का उपयोग केवल मल्टीपार्ट एन्कोडिंग के साथ किया जा सकता है। (पैरामीटर # 8)

इस मामले में, मैं सर्वर पर TypedFile का उपयोग करके छवि भेजने का प्रयास करता हूं। इस तरह मेरे इंटरफेस विधि नज़र:

@Headers({"Content-type: application/json"}) 
    @POST("/user/change") 
    void postChange(@Query("name") String name, @Query("email") String email, @Query("password") String password, @Query("phone") String phone, @Query("user_id") String userId, @Query("address[]") String[] listAddress, @Query("head[]") String[] head, @Part("photo_profile") TypedFile photoProfile, @Body TypedInput jsonObject, Callback<ReceiveDTO> callback); 

संपादित

कि विधि में हम @Part और @Body देख सकते हैं। अगर मैं विधि ऊपर @Multipart जोड़ने के लिए, यह हम एक त्रुटि फेंक होगा @Body parameters cannot be used with form or multi-part encoding. (parameter #9)

मैं उपयोग कर रहा हूँ पुराना वापस 1.9

+0

मैं यहाँ उदाहरण का अनुसरण सुझाव है - https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server समस्या आप कर रहे हैं के साथ बहुखण्डीय और फिर संपादित प्रश्न का उपयोग कर –

उत्तर

4

हम केवल Get अनुरोध के साथ और तथ्य यह है में @query पर संलग्न पैरामीटर @query का उपयोग यूआरएल का अंत, Doc उदाहरण देखें।

आप सर्वर से उपयोगकर्ता प्रोफ़ाइल जानकारी भेजने के लिए की जरूरत है, का प्रयोग करें MultiPart

मल्टीपार्ट भागों रेट्रोफिट के कन्वर्टर्स में से एक का उपयोग करें या वे अपने स्वयं के क्रमबद्धता को संभालने के लिए RequestBody लागू कर सकते हैं।

उदाहरण निम्नलिखित में उदाहरण के लिए हम सर्वर से कुछ विवरण के साथ प्रोफाइल तस्वीर भेजें:

@Multipart 
@PUT("user/photo") 
Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description); 

आप और अधिक अतिरिक्त विशेषता भी [अतिरिक्त @Part] जोड़ सकते हैं। पूरा उदाहरण देखें here जो चरण-दर-चरण मैं समझाता हूं कि यह कैसे करें।

संपादित: जैसा कि JackWarthon here समझाने, @Body एनोटेशन एक ही अनुरोध शरीर को परिभाषित करता है।

interface Foo { 
    @POST("/jayson") 
    FooResponse postJson(@Body FooRequest body); 
} 
+0

का सामना करना पड़ रहा है मुझे अभी भी एक त्रुटि मिली है @ @ बॉडी पैरामीटर का उपयोग फॉर्म या बहु-भाग एन्कोडिंग के साथ नहीं किया जा सकता है। (पैरामीटर # 9) '। ऐसा इसलिए है क्योंकि पिछले पैरामीटर में '@ बॉडी 'है। –

+0

@RBesar संपादित उत्तर देखें। – Amir

संबंधित मुद्दे

 संबंधित मुद्दे