Retrofit 2를 사용하여 원시 JSON 게시
다른 응용 프로그램에서받은 큰 JSON 개체가 있고 Retrofit 2를 사용하여 API에 대한 포스트 호출을해야합니다.이 항목에서 찾은 모든 예제 또는 항목은 JSONObject 또는 맵을 사용합니다. 즉, JSONObject 또는 Map을 생성하려면 내 문자열 (JSON)을 구문 분석해야합니다.
그러나 나는 어떻게 든 몸에 내 끈을 직접 넣고 싶습니다.
이 방법으로 시도했지만 작동하지 않습니다.
@Headers("Content-Type: application/json")
@POST("transactions")
Call<Void> submitTransaction(@Body String body);
나는 몸으로 탈출하여 내 JSON 이상한 보인다되는 문자열을 보낸다이 방법 : 스크린 샷
답변
1 Nemanja
Gradle 종속성 목록에 Scalars Converter를 추가해야합니다. 그러면 Retrofit은 기본적으로 Gson 변환기를 사용하기 때문에 java.lang.String 개체를 텍스트 / 일반 요청 본문으로 변환하는 작업을 처리합니다. 이 링크에서 최신 버전을 확인하십시오.
https://search.maven.org/search?q=g:com.squareup.retrofit2%20a:converter-scalars
dependencies {
implementation “com.squareup.retrofit2:converter-scalars:2.4.0”
..
}
그런 다음 올바른 변환기 팩토리를 Retrofit 빌더에 전달해야합니다. 나중에 서비스에 전달 된 @Body 매개 변수를 변환하는 방법을 Retrofit에 알려줍니다.
val retrofit = Retrofit.Builder()
.client(okHttpClient)
.baseUrl("/")
.addConverterFactory(ScalarsConverterFactory.create())
.build()
그런 다음 String body 매개 변수로 Retrofit 서비스를 설정할 때입니다.
@Headers("Content-Type: application/json")
@POST("transactions")
Call<Void> submitTransaction(@Body String body);