Buenas. tengo un método en una clase java que uso en mi app Android. Este método tiene que devolver una variable "result" que nos indica si la petición mediante okhttp3 es correcta o no. El problema es que la primera vez que llamo a ese método me devuelve el valor inicial de "result" en vez del mensaje.
************************************************** ****************
static String result="hol";
String post(String url, String... parametros) throws IOException
{
OkHttpClient client = new OkHttpClient();
FormBody.Builder builder = new FormBody.Builder();
builder.add(parametros[0], parametros[1]);
builder.add(parametros[2], parametros[3]);
RequestBody formBody = builder.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call call = client.newCall(request);
call.enqueue(new okhttp3.Callback()
{
@Override
public void onFailure(Call call, IOException e)
{
Log.e("TAG", "(onFailure) The request was not successful");
}
@Override
public void onResponse(Call call, Response response) throws IOException
{
try
{
if (response.isSuccessful())
{
result = response.body().string();
Log.v("RESPUESTA", "Resultado:" +result);
} else
{
Log.v("TAG", "(onResponse) Was not successful");
}
} catch (IOException e)
{
Log.e("TAG", "Exception caught: ", e);
}
}
});
return result;
}
************************************************** ***************
Ejemplo:
-"result" vale hol.
-La primera vez que llamo a este método me devuelve hol en vez del mensaje de existe o no.
-La segunda vez me devuelve e mensaje original.
Por más vueltas que le he dado no se donde esta el problema, espero que puedan ayudarme, un saludo y muchas gracias.
P.D: Si "result" no la inicializo a nada, me devuelve vacío todo el rato.