В Android-разработке существует несколько подходов для организации сетевого взаимодействия. Рассмотрим основные варианты с их преимуществами и недостатками.
val url = URL("https://api.example.com/data")
val connection = url.openConnection() as HttpURLConnection
try {
connection.requestMethod = "GET"
val inputStream = connection.inputStream
// Обработка ответа
} finally {
connection.disconnect()
}
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.example.com/data")
.build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
// Обработка ответа
}
})
interface ApiService {
@GET("users/{id}")
suspend fun getUser(@Path("id") userId: String): User
}
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val service = retrofit.create(ApiService::class.java)
val queue = Volley.newRequestQueue(context)
val request = JsonObjectRequest(Request.Method.GET, url, null,
{ response -> /* обработка */ },
{ error -> /* обработка */ })
queue.add(request)
val channel = ManagedChannelBuilder.forAddress("host", port)
.usePlaintext()
.build()
val stub = MyServiceGrpc.newBlockingStub(channel)
val response = stub.getData(request)
val query = """
query {
user(id: "123") {
name
email
}
}
""".trimIndent()
val request = Request.Builder()
.url("https://api.example.com/graphql")
.post(RequestBody.create(query, MEDIA_TYPE_JSON))
.build()
val client = OkHttpClient()
val request = Request.Builder().url("ws://echo.websocket.org").build()
val listener = object : WebSocketListener() {
override fun onMessage(webSocket: WebSocket, text: String) {
// Обработка сообщения
}
}
val ws = client.newWebSocket(request, listener)
выбор технологии зависит от требований проекта. Для большинства мобильных приложений оптимальным выбором будет Retrofit с корутинами, тогда как для специфических задач (реальное время, высокие нагрузки) стоит рассмотреть WebSockets или gRPC.