Multipart request with Retrofit @PartMap Error in Kotlin (Android) -


if using code in java working fine. when convert code in kotlin got error.

logcat

08-20 23:46:51.003 3782-3782/com.qkangaroo.app w/system.err: java.lang.illegalargumentexception: parameter type must not include type variable or wildcard: java.util.map (parameter #1) 08-20 23:46:51.003 3782-3782/com.qkangaroo.app w/system.err: method apiinterface.updatecustomerdetail 08-20 23:46:51.003 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.servicemethod$builder.methoderror(servicemethod.java:752) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.servicemethod$builder.methoderror(servicemethod.java:743) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.servicemethod$builder.parametererror(servicemethod.java:761) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.servicemethod$builder.build(servicemethod.java:195) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.retrofit.loadservicemethod(retrofit.java:170) 08-20 23:46:51.005 3782-3782/com.qkangaroo.app w/system.err: @ retrofit2.retrofit$1.invoke(retrofit.java:147) 08-20 23:46:51.005 3782-3782/com.qkangaroo.app w/system.err: @ $proxy0.updatecustomerdetail(native method) 08-20 23:46:51.005 3782-3782/com.qkangaroo.app w/system.err: @ com.qkangaroo.app.fragments.morescreen.morefragment.updateprofile(morefragment.kt:261) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/system.err: @ com.qkangaroo.app.fragments.morescreen.morefragment$clicklistener$1.onclick(morefragment.kt:191) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/system.err: @ android.view.view.performclick(view.java:3517) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/system.err: @ android.view.view$performclick.run(view.java:14155) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/system.err: @ android.os.handler.handlecallback(handler.java:605) 08-20 23:46:51.007 3782-3782/com.qkangaroo.app w/system.err: @ android.os.handler.dispatchmessage(handler.java:92) 08-20 23:46:51.007 3782-3782/com.qkangaroo.app w/system.err: @ android.os.looper.loop(looper.java:154) 08-20 23:46:51.007 3782-3782/com.qkangaroo.app w/system.err: @ android.app.activitythread.main(activitythread.java:4624) 08-20 23:46:51.008 3782-3782/com.qkangaroo.app w/system.err: @ java.lang.reflect.method.invokenative(native method) 08-20 23:46:51.009 3782-3782/com.qkangaroo.app w/system.err: @ java.lang.reflect.method.invoke(method.java:511) 08-20 23:46:51.009 3782-3782/com.qkangaroo.app w/system.err: @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:809) 08-20 23:46:51.010 3782-3782/com.qkangaroo.app w/system.err: @ com.android.internal.os.zygoteinit.main(zygoteinit.java:576) 08-20 23:46:51.011 3782-3782/com.qkangaroo.app w/system.err: @ dalvik.system.nativestart.main(native method)

fragment.kt

    var map:hashmap<string,requestbody> = hashmap<string, requestbody>()     map.put("version",apiclient.createrequestbody(appconstants.api_version))     map.put("auth_token", apiclient.createrequestbody(customer.authtoken!!))     map.put("customer_name",apiclient.createrequestbody(profilename))     map.put("email", apiclient.createrequestbody(profileemail))      val apiinterface = apiclient.client.create(apiinterface::class.java)      val updatecustomercall: call<updatecustomer> = apiinterface.updatecustomerdetail(map)     updatecustomercall.enqueue(object : callback<updatecustomer> {         override fun onresponse(call: call<updatecustomer>?, response: response<updatecustomer>?) {          }          override fun onfailure(call: call<updatecustomer>?, t: throwable?) {             utilities!!.hideprogress(progress)         }     }) 

apiclient.kt

val multipart_form_data = "multipart/form-data"  fun createrequestbody(s: string): requestbody {     return requestbody.create(             mediatype.parse(multipart_form_data), s) } 

apiinterface,.kt

@multipart @post("customer") fun updatecustomerdetail(@partmap map: map<string,requestbody >): call<updatecustomer> 

gradle file

implementation "com.squareup.okhttp3:okhttp:3.8.1" implementation "com.squareup.okhttp3:logging-interceptor:3.8.1" implementation ("com.squareup.retrofit2:retrofit:2.3.0"){      exclude module: 'okhttp' } implementation "com.squareup.retrofit2:converter-gson:2.3.0" 

add @jvmsuppresswildcards before requestbody

fun updatecustomerdetail(@partmap map: map<string, @jvmsuppresswildcards requestbody >): call<updatecustomer> 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -