Здравствуйте!
Как сделать запрос с SOCKS с логином и паролем с помощью okhttp на kotlin?
Перепробовал уже всякое, как говорится. Выдаваемые ошибки углубляли в вопрос, но заводили также в тупик.
Как правильно реализовать? Спасибо.
val proxyHost = "81.177.183.222"
val proxyPort = 8000
val socket = Socket(proxyHost, proxyPort)
val proxy: Proxy = Proxy(Proxy.Type.SOCKS, InetSocketAddress(proxyHost, proxyPort))
val credential: String = Credentials.basic("nGow22", "G6LU22")
val postBody = "&hardware_id=1"
val api = "https://vk.com"
val request = Request.Builder()
.url(api)
.post(postBody.toRequestBody(MEDIA_TYPE_MARKDOWN))
.header("Proxy-Authorization", credential)
.header("Connection", "close")
.build()
client = OkHttpClient.Builder()
/*
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
*/
.retryOnConnectionFailure(true)
.proxy(proxy)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
println("client.newCall(request).enqueue ERROR")
e.printStackTrace()
runOnUiThread {
Toast.makeText(
this@MainActivity,
"Крит.ошибка: ${e.message}",
Toast.LENGTH_LONG
).show()
}
return
}
override fun onResponse(call: Call, response: Response) {
response.use {
if (!response.isSuccessful) {
// Simply returning api's own failure message
println("!response.isSuccessful")
return
//throw IOException("Unexpected code $response")
}
/*
for ((name, value) in response.headers) {
println("$name: $value")
}
*/
val jsonData = response.body.string()
println("jsonData: $jsonData")
if(jsonData.isEmpty()) {
println("jsonData.isEmpty()")
return
}
}
}
})