Ciao,
So sto provando a richiamare un API , tramiti retrofit.
L'url che io richiamo, si trova su un server, in cui in questi momento accedo vai VPN.
var urlConnection: String ="http://iswvgenint03/api/"
var urlConnection: String ="http://172.20.26.375/api/"
Il token che io invio in questo momento é buono.
Io ho testato tutto tramite Postman e funziona correttamente .
Invece quando io richiamo tramite Android studio ricevo l'eccezione "retrofit unable to resolve host".
io ho effettuato varie modifiche al codice, secondo alcuni esempi trovati in rete, ma o non riesco a risolvere il problema.
Se lo stesso codice io l'utilizzo per accedere alle api pubbliche di "jsonplaceholder.typicode.com" tutto mi funziona correttamente.
Io arrivo sempre in onFailure
// var urlConnection: String ="http://iswvgenint03/api/"
var urlConnection: String ="http://172.20.26.375/api/"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var miocontext = this.baseContext
// textViewResult= findViewById(R.id.text_view_result);
val clientBuilder = OkHttpClient.Builder()
var authTokenBearer ="Bearer eyJuYW1laWQiOiI2MzcxMCIsInVuaXF1ZV9uYW1lIjoiVXRpbGlzYXRldXJFdHVkZUlOb3RBY3Rlc18yNzAzNjAiLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6IjMzMkEyMDFFLUJBQUItNDRF"
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): okhttp3.Response? {
val original = chain.request()
val request = original.newBuilder()
.header("Authorization", authTokenBearer)
.method(original.method(), original.body())
.build()
return chain.proceed(request)
}
}
//Add the interceptor to the client builder.
clientBuilder.addInterceptor(headerAuthorizationInterceptor)
val client: OkHttpClient = clientBuilder.build()
var retrofit = Retrofit.Builder()
.baseUrl(urlConnection)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
val jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi::class.java)
val call = jsonPlaceHolderApi.getClients()
call.enqueue(object : Callback<List<Client>> {
override fun onResponse(call: Call<List<Client>>, response: Response<List<Client>>) {
if (!response.isSuccessful) {
return
}
val posts = response.body()!!
}
override fun onFailure(call: Call<List<Client>>, t: Throwable) {
Log.d("errot",t.message)
}
})
}
I messaggi di errore che io ricevo sono
java.net.UnknownHostException: Unable to resolve host "iswvgenint03": No address associated with hostname
se utilizzo l'url
mentre
java.net.UnknownServiceException: CLEARTEXT communication to 172.20.26.375 not permitted by network security policy
se utilizzo l'indirizzo ip
Io penso che Android studio non riesce ad arrivare all'url tramite vpn.
Avete qualche soluzione per me?