Richieste HTTP in Android con OkHttp
Nelle ultime versioni dell'SDK, sono state fatte pesanti modifiche a tutta la parte che riguarda le richieste HTTP.
Ma, a quanto pare, ancora non si è raggiunta l'efficienza di alcune librerie esterne.
Oggi ne vediamo una, con un esempio easy: OkHttp!
Per usare la libreria, potete scaricare il jar dal sito ufficiale, oppure usare Gradle.
In questo caso aggiungete questa riga nel build.gradle (Module: app):
dependencies {
................
compile 'com.squareup.okhttp3:okhttp:3.5.0'
................
}
Poi create una classe per effettuare le richieste GET/POST:
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class RestCall {
public static String get(OkHttpClient client, String url) throws IOException {
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
return response.body().string();
}
public static String post(OkHttpClient client, String url, RequestBody body) throws IOException {
Request request = new Request.Builder().url(url).post(body).build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
Due metodi statici, abbastanza semplici.
A questo punto nella nostra Activity:
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.io.IOException;
import okhttp3.OkHttpClient;
public class MainActivity extends AppCompatActivity {
private OkHttpClient client;
private String response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = new OkHttpClient();
getContent();
}
private void getContent() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
response = RestCall.get(client, "http://www.omdbapi.com/?t=batman&y=&plot=short&r=json");
Log.d("Response", response);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute();
}
}
Interroghiamo il servizio OMDB, passando alcuni parametri.
Non ho messo esempi per le richieste POST; ve lo lascio come compito.
La libreria, ovviamente, non è solo questa.
Ha tantissimi altri metodi da usare, che potete trovare nella Javadoc.
Sicuramente una libreria da tenere in considerazione.
Enjoy!
java android okhttp get post
Commentami!