Я новичок в разработке android kotlin и сейчас пытаюсь решить, как правильно создать отдельный экземпляр OkHttpClient для использования в приложениях.В настоящее время я вроде * создал отдельный экземпляр клиента и использовал его для связи с сервером, однако в настоящее время внутренний сервер не использует токен / идентификатор пользователя для проверки, а для проверки IP.Я могу войти в систему без проблем, но после перехода к другому действию, пытающемуся вызвать api, доступ к серверу блокируется, потому что, по-видимому, IP-адрес не совпадает.Я использовал POSTMAN, а также уже создал такое же работающее приложение для iOS, которое работает без проблем.Итак, мой вопрос, я создаю один экземпляр OkHttpClient неправильно?Или OkHttpClient не подходит для такой системы ipcheck?Должен ли я использовать другую библиотеку, и если да, какие-либо предложения и примеры?
Заранее спасибо
В настоящее время я пытался создать ее следующим образом:
class MyApplication: Application(){
companion object{
lateinit var client: OkHttpClient
}
override fun onCreate(){
super.onCreate()
client = OkHttpClient()
}
}
Затем я создалвспомогательный класс для него:
class OkHttpRequest {
private var client : OkHttpClient = MyApplication.client
fun POST(url: String, parameters: HashMap<String, String>, callback: Callback): Call {
val builder = FormBody.Builder()
val it = parameters.entries.iterator()
while (it.hasNext()) {
val pair = it.next() as Map.Entry<*, *>
builder.add(pair.key.toString(), pair.value.toString())
}
val formBody = builder.build()
val request = Request.Builder()
.url(url)
.post(formBody)
.build()
val call = client.newCall(request)
call.enqueue(callback)
return call
}
fun GET(url: String, callback: Callback): Call {
val request = Request.Builder()
.url(url)
.build()
val call = client.newCall(request)
call.enqueue(callback)
return call
}
}
Наконец, я использую его следующим образом:
val loginUrl = MyApplication.postLoginUrl
var userIdValue = user_id_textfield.text.toString()
var passwordValue = password_textfield.text.toString()
val map: HashMap<String, String> = hashMapOf("email" to userIdValue, "password" to passwordValue)
var request = OkHttpRequest()
request.POST(loginUrl, map, object : Callback {
val responseData = response.body?.string()
// do something with response Data
}
И на другой активности после входа пользователя в систему:
val getPaidTo = MyApplication.getPaidTo
var request = OkHttpRequest()
request.GET(getPaidTo, object: Callback{
//do something with data
}