retrofit загрузить картинку
интерфейсы для получения ссылки из vkapi и загрузки картинки
// получение ссылки для загрузки фото
@GET("photos.getOwnerPhotoUploadServer?")
fun getUrlUpload(
@Query("access_token") access_token : String = token,
@Query("v") version : String = VKVERSION,
@Query("owner_id") owner_id : String
) : Call<VKUrlUploadResponse>
// загрузка аватарки
@Multipart
@POST("{url}")
fun setUrlUpload(
@Path("url") url : String,
@Part("photo") photo : RequestBody?
) : Response<ResponseBody>
Далее вызываю метод
CommonVk.vkService.getUrlUpload(owner_id = "-${group?.id}").enqueue(object : Callback<VKUrlUploadResponse>{
override fun onFailure(call: Call<VKUrlUploadResponse>, throwable: Throwable) {
TODO("Not yet implemented")
}
override fun onResponse(call: Call<VKUrlUploadResponse>, response: Response<VKUrlUploadResponse>) {
(response.body() as VKUrlUploadResponse).response?.upload_url.let {
url = it.toString()
println("url = $url")
}
var file = File(iconSourceFile)
var body = (file).asRequestBody("image/jpg".toMediaTypeOrNull())
CommonVk.vkService.setUrlUpload(url = url, photo = body)
}
})
Выходит вот такая ошибка:
java.lang.IllegalArgumentException: Unable to create call adapter for retrofit2.Response<okhttp3.ResponseBody>
for method VkService.setUrlUpload
at retrofit2.Utils.methodError(Utils.java:54)
at retrofit2.HttpServiceMethod.createCallAdapter(HttpServiceMethod.java:116)
at retrofit2.HttpServiceMethod.parseAnnotations(HttpServiceMethod.java:67)
at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:39)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:202)
at retrofit2.Retrofit$1.invoke(Retrofit.java:160)
at jdk.proxy1/jdk.proxy1.$Proxy0.setUrlUpload(Unknown Source)
at ru.Frozik6k.VKmonitoring.app.vkapi.VkClient$createGroup$1$onResponse$3.onResponse(vkTestService.kt:80)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:161)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for retrofit2.Response<okhttp3.ResponseBody>.
Tried:
* retrofit2.CompletableFutureCallAdapterFactory
* retrofit2.DefaultCallAdapterFactory
at retrofit2.Retrofit.nextCallAdapter(Retrofit.java:272)
at retrofit2.Retrofit.callAdapter(Retrofit.java:237)
at retrofit2.HttpServiceMethod.createCallAdapter(HttpServiceMethod.java:114)
... 11 more