(रेट्रोफिट) वर्ग दुर्घटनाग्रस्त ऐप के लिए कनवर्टर का पता नहीं लगा सका


82

इसलिए रेट्रोफिट 2.0.0 को हाल ही में जारी किया गया था और इसका उपयोग करने के तरीके के बारे में वास्तव में कोई अद्यतन उदाहरण नहीं है, लेकिन इसे मूल एपीआई कॉल के लिए लागू करने की कोशिश कर रहा हूं। Im एक हो रही है

java.lang.IllegalArgumentException: Unable to create converter for class` 

के कारण

Caused by: java.lang.IllegalArgumentException: Could not locate converter for class orbyt.app.dataclass. Tried:
* retrofit.OkHttpBodyConverterFactory

जब आपी को बुलाने की कोशिश की जा रही है।


रेट्रोफिट को नहीं जानता, मुझे लगता है कि एक एनोटेशन है जो कनवर्टर को कहीं निर्दिष्ट कर सकता है।
जियांग वाईडी

@ जियांगवाईड का मतलब यह नहीं है कि आपका क्या मतलब है
ऑर्बिट

आपको इस त्रुटि के बारे में अधिक कोड पोस्ट करने की आवश्यकता है। पोस्ट आप आपी कॉल करें।
हेलोइसीसिम

Square.github.io/retrofit पर उदाहरण इस त्रुटि को फेंकता है। यदि आप उस व्यक्ति से सवाल पूछना नहीं चाहते हैं, या यदि आप विवरण चाहते हैं, तो इसे आज़माएं। वे कुछ भी करने की कोशिश नहीं कर रहे हैं।
एंड्रयू कोस्टर

जवाबों:


135

मैं उसी मुद्दे का सामना कर रहा था। मैंने इसे जोड़कर तय किया:

compile 'com.squareup.retrofit2:converter-gson:<latest-version>'

मेरे build.gradle के लिए

फिर मेरा रेट्रोफिट उदाहरण बनाते समय कनवर्टर निर्दिष्ट करें।

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

2
इसलिए मैंने इसे पिछली रात को वास्तव में मूल रूप से इन 2 वर्गों को मेरी परियोजना में कॉपी करके और कॉल करके तय किया .addConverterFactory(GsonConverterFactory.create())। ग्रेडर के माध्यम से कन्वर्टर्स को जोड़ना स्पष्ट रूप से एक क्लीनर विकल्प है, इसलिए इसे उत्तर के रूप में चिह्नित करना है।
कक्षा

1
यह भी सुनिश्चित करें कि आपका संस्करण आपके लिए अपने संस्करण से converter-gsonमेल खाता retrofitहै - देखें stackoverflow.com/questions/32902157/…
gravitron

यह उत्तर पुराना है, ग्रैडल इस संस्करण के साथ सिंक नहीं करेगा, बहुत कम संकलन। आपको संकलन 'com.squareup.retrofit2: कनवर्टर-गॉन: 2.0.2' की जरूरत है
एंड्रयू कोस्टर

15

Retrofit 2.0 में, कनवर्टर पैकेज में शामिल नहीं है और जब आप Retrofit 2.0 का उपयोग कर रहे हैं, तो सुनिश्चित करें कि नए URL पैटर्न का पालन करें

आधार URL: हमेशा / के साथ समाप्त होता है

@ यूआरएल: के साथ शुरू नहीं /

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Constants.API_BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

2.0 के बारे में अधिक जानकारी के लिए इस लिंक का अनुसरण करें Retrofit 2.0: सबसे बड़ा अद्यतन

और build.gradle को भी अपडेट करें।

implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"

और प्रोजेक्ट स्तर build.gradle फ़ाइल में एक्सटेंशन जोड़ें

ext {
retrofit_version= "2.x.x"
}

इस उत्तर में प्रासंगिक ग्रेडल निर्भरता शामिल नहीं है।
एंड्रयू कोस्टर

@ मैं सबसे अच्छा अद्यतन लिंक का उल्लेख किया है उन्होंने इस सभी चीजों का उल्लेख किया है। वर्तमान संस्करण पर एपीआई आधार को अपडेट करने की आवश्यकता है
अजीत कुमार दुबे

7

तदनुसार रेट्रोफिट संस्करण बदलें

मेरे लिए नीचे निर्भरता पहले से ही थी

compile 'com.squareup.retrofit2:retrofit:2.0.2'

Gson 2.0.2 के लिए मैं बदल गया

compile 'com.squareup.retrofit2:converter-gson:2.0.2'

फिर जोड़िए

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

यह उत्तर आज तक है, इसमें पुराने की तुलना में अधिक वोट होने चाहिए और एक से अधिक वोट भी शामिल हैं, जिसमें प्रासंगिक निर्भरता भी शामिल नहीं है।
एंड्रयू कोस्टर

6

Retrofit V2 के लिए निम्नलिखित रिपॉजिटरी जोड़ें -

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'

अब नीचे दिए गए कोड का उपयोग करें -

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

आशा है कि यह मदद करेगा :)


3

नवीनतम रेट्रोफिट 2.0 में, आपको नवीनतम संस्करण आयात करना चाहिए:

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'

सावधान रहें 2 baseUrl()v2.0 पर कॉल करें , यह "/" का अंत होना चाहिए, और विधि पर, आप "/" के साथ थ्रिल यूआरएल शुरू नहीं करेंगे।

@POST("classes/info")
Call<ContactBean> insertInfo(@Body ContactBean bean);

और आप अधिक जानकारी प्राप्त करने के लिए रेट्रोफिट देख सकते हैं ! आशा है कि मदद!


1

में मेरे मामले (coroutines साथ Kotlin) मैं अपवाद प्राप्त किया:

Retrofit2.Call के लिए कनवर्टर बनाने में असमर्थ

विधि के लिए Queries.exportPdf।

इसके कारण: java.lang.IllegalArgumentException: Retrofit2.Call के लिए ResponseBody कनवर्टर का पता नहीं लगा सका

अनुरोध में एक समस्या थी:

@FormUrlEncoded
@Streaming
@POST("export-pdf/")
suspend fun exportPdf(
    @Field("token") token: String
): Call<ResponseBody>

suspendपरिभाषा और अपवादों को हटा दिया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.