Я пытаюсь опубликовать данные на сервере с помощью retrofit2 и rxjava2 после того, как данные успешно отправлены на сервер. Я хочу получить ответ от сервера. Я использую kotlin, так как я могу получить ответ сервера в своем приложении.
Это то, что я сделал до сих пор:
AddHero.kt
class AddHero : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add_hero)
addHero.setOnClickListener {
if(hero.text.toString().equals("")){
Toast.makeText(applicationContext,"Enter superhero name",Toast.LENGTH_SHORT).show()
}
else if(movie.text.toString().equals("")){
Toast.makeText(applicationContext,"Enter movie name",Toast.LENGTH_SHORT).show()
}
else{
saveData()
}
}
}
private fun saveData() {
RetrofitClient.create().saveHero(hero.text.toString(),movie.text.toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
}
}
RetrofitClient.kt
object RetrofitClient {
fun create():ApiService{
val okHttpClient = OkHttpClient.Builder()
.connectTimeout(12,TimeUnit.SECONDS)
.readTimeout(12,TimeUnit.SECONDS)
.writeTimeout(12,TimeUnit.SECONDS)
.build()
val retrofit = Retrofit.Builder()
.baseUrl("https://www.example.com")
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().setLenient().create()))
.client(okHttpClient)
.build()
val service = retrofit.create(ApiService::class.java)
return service
}
}
ApiService.kt
interface ApiService {
@POST("createHero")
@FormUrlEncoded
fun saveHero(@Field("name") name:String,
@Field("movie") movie:String):Observable<Hero>
}
Hero.kt
data class Hero (
@SerializedName("name")
val name:String,
@SerializedName("movie")
val movie:String
)
Кто-то, пожалуйста, дайте мне знать, что я делаю неправильно или отсутствует. Любая помощь будет оценена.
СПАСИБО