(Retrofit) 클래스 충돌 앱에 대한 변환기를 찾을 수 없습니다.


81

따라서 Retrofit 2.0.0이 최근에 출시되었으며 사용 방법에 대한 업데이트 된 예제는 없지만 기본 API 호출을 위해 구현하려고합니다. 나는 점점

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

API 호출을 시도 할 때.


Retrofit을 모릅니다. 어딘가에 변환기를 지정할 수있는 주석이있는 것 같습니다.
Jiang YD

@JiangYD는 무슨 뜻인지 확실하지 않습니다
Orbit

이 오류에 대한 추가 코드를 게시해야합니다. API 호출을 게시하십시오.
heloisasim

square.github.io/retrofit 의 예 에서이 오류가 발생합니다. 질문을하는 사람을 믿지 않거나 세부 사항을 원하는 경우 시도해보십시오. 그들은 멋진 일을하려고하지 않습니다.
Andrew Koster 2013 년

답변:


134

나는 같은 문제에 직면했다. 다음을 추가하여 수정했습니다.

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

내 build.gradle에

그런 다음 Retrofit 인스턴스를 만들 때 변환기를 지정합니다.

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

2
그래서 나는 기본적으로 복사하여 실제로이 마지막 밤을 고정 내 프로젝트에이 개 수업을하고 전화 .addConverterFactory(GsonConverterFactory.create()). gradle을 통해 변환기를 연결하는 것은 분명히 더 깨끗한 옵션이므로 이것을 답으로 표시하십시오.
Orbit

1
또한에 converter-gson대한 버전이 retrofit자신 의 버전과 일치 하는지 확인 하십시오. 참조 : stackoverflow.com/questions/32902157/…
gravitron

이 답변은 오래되었습니다. Gradle은이 버전과 동기화되지 않으며 컴파일도 훨씬 적습니다. 당신은 'com.squareup.retrofit2을 : 컨버터 GSON를 : 2.0.2'컴파일 필요
앤드류 코스터를

15

Retrofit 2.0에서 Converter는 패키지에 포함되어 있지 않으며 Retrofit 2.0을 사용하는 경우 새 URL 패턴을 따르십시오.

기본 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"
}

이 답변에는 관련 Gradle 종속성이 포함되어 있지 않습니다.
Andrew Koster 2013 년

@Ak 나는 그들이이 모든 것을 언급 한 가장 큰 업데이트 링크를 언급했습니다. 현재 버전에서 API 기반 업데이트 필요
Ajit Kumar Dubey

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

이 답변은 최신이며, 오래된 것보다 더 많은 표를 가져야하며 관련 종속성을 포함하지 않는 것보다 더 많이 있어야합니다.
Andrew Koster 2013 년

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

최신 Retrofit 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'

주의하여 호출하십시오 baseUrl(). v2.0에서는 "/"로 끝나야하며 메소드에서 "/"로 URL을 시작하지 않습니다.

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

그리고 더 많은 정보를 얻기 위해 Retrofit 을 볼 수 있습니다 ! 희망 도움!


1

에서 내 사건 (코 루틴과 코 틀린) 나는 예외를 받았습니다 :

개 조용 변환기를 만들 수 없습니다.

Queries.exportPdf 메소드의 경우.

원인 : java.lang.IllegalArgumentException : retrofit2.Call에 대한 ResponseBody 변환기를 찾을 수 없습니다.

요청에 문제가 있습니다.

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

suspend정의에서 제거 되고 예외가 사라졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.