Pustaka praktis sederhana untuk menggunakan HttpURLConnection untuk membuat permintaan dan mengakses respons.
Perpustakaan ini tersedia di bawah Lisensi MIT.
Perpustakaan permintaan http tersedia dari Maven Central.
< dependency >
< groupId >com.github.kevinsawicki</ groupId >
< artifactId >http-request</ artifactId >
< version >6.0</ version >
</ dependency >
Tidak menggunakan Maven? Cukup salin kelas HttpRequest ke dalam proyek Anda, perbarui deklarasi paket, dan Anda siap melakukannya.
Javadocs tersedia di sini.
Lihat di sini untuk daftar proyek terkenal yang menggunakan perpustakaan ini.
Pustaka ini ditulis untuk membuat permintaan HTTP menjadi sederhana dan mudah saat menggunakan HttpURLConnection
.
Perpustakaan seperti Apache HttpComponents sangat bagus tetapi terkadang untuk kesederhanaan, atau mungkin untuk lingkungan tempat Anda menerapkan (Android), Anda hanya ingin menggunakan HttpURLConnection
kuno yang bagus. Pustaka ini berupaya menambah kenyamanan dan pola umum pada tindakan pembuatan permintaan HTTP seperti antarmuka yang lancar untuk membuat permintaan dan dukungan untuk fitur seperti permintaan multibagian.
Intinya: Tujuan tunggal perpustakaan ini adalah untuk meningkatkan kegunaan kelas HttpURLConnection
.
Tidak ada . Tujuan dari perpustakaan ini adalah menjadi satu kelas kelas dengan beberapa kelas statis dalam. Proyek pengujian memerlukan Jetty untuk menguji permintaan terhadap implementasi server HTTP yang sebenarnya.
Kelas HttpRequest
tidak menampilkan pengecualian yang dicentang, melainkan semua pengecualian tingkat rendah dibungkus dalam HttpRequestException
yang memperluas RuntimeException
. Anda dapat mengakses pengecualian yang mendasarinya dengan menangkap HttpRequestException
dan memanggil getCause()
yang akan selalu mengembalikan IOException
asli.
TIDAK . Objek HttpUrlConnection
yang mendasari setiap objek HttpRequest
memiliki API sinkron dan oleh karena itu semua metode di HttpRequest
juga sinkron.
Oleh karena itu penting untuk tidak menggunakan objek HttpRequest
di thread utama aplikasi Anda.
Berikut adalah contoh Android sederhana dalam menggunakannya dari AsyncTask:
private class DownloadTask extends AsyncTask < String , Long , File > {
protected File doInBackground ( String ... urls ) {
try {
HttpRequest request = HttpRequest . get ( urls [ 0 ]);
File file = null ;
if ( request . ok ()) {
file = File . createTempFile ( "download" , ".tmp" );
request . receive ( file );
publishProgress ( file . length ());
}
return file ;
} catch ( HttpRequestException exception ) {
return null ;
}
}
protected void onProgressUpdate ( Long ... progress ) {
Log . d ( "MyApp" , "Downloaded bytes: " + progress [ 0 ]);
}
protected void onPostExecute ( File file ) {
if ( file != null )
Log . d ( "MyApp" , "Downloaded file to: " + file . getAbsolutePath ());
else
Log . d ( "MyApp" , "Download failed" );
}
}
new DownloadTask (). execute ( "http://google.com" );
int response = HttpRequest . get ( "http://google.com" ). code ();
String response = HttpRequest . get ( "http://google.com" ). body ();
System . out . println ( "Response was: " + response );
HttpRequest . get ( "http://google.com" ). receive ( System . out );
HttpRequest request = HttpRequest . get ( "http://google.com" , true , 'q' , "baseball gloves" , "size" , 100 );
System . out . println ( request . toString ()); // GET http://google.com?q=baseball%20gloves&size=100
int [] ids = new int [] { 22 , 23 };
HttpRequest request = HttpRequest . get ( "http://google.com" , true , "id" , ids );
System . out . println ( request . toString ()); // GET http://google.com?id[]=22&id[]=23
String contentType = HttpRequest . get ( "http://google.com" )
. accept ( "application/json" ) //Sets request header
. contentType (); //Gets response header
System . out . println ( "Response content type was " + contentType );
int response = HttpRequest . post ( "http://google.com" ). send ( "name=kevin" ). code ();
int response = HttpRequest . get ( "http://google.com" ). basic ( "username" , "p4ssw0rd" ). code ();
HttpRequest request = HttpRequest . post ( "http://google.com" );
request . part ( "status[body]" , "Making a multipart request" );
request . part ( "status[image]" , new File ( "/home/kevin/Pictures/ide.png" ));
if ( request . ok ())
System . out . println ( "Status was updated" );
Map < String , String > data = new HashMap < String , String >();
data . put ( "user" , "A User" );
data . put ( "state" , "CA" );
if ( HttpRequest . post ( "http://google.com" ). form ( data ). created ())
System . out . println ( "User was created" );
File output = new File ( "/output/request.out" );
HttpRequest . get ( "http://google.com" ). receive ( output );
File input = new File ( "/input/data.txt" );
int response = HttpRequest . post ( "http://google.com" ). send ( input ). code ();
File latest = new File ( "/data/cache.json" );
HttpRequest request = HttpRequest . get ( "http://google.com" );
//Copy response to file
request . receive ( latest );
//Store eTag of response
String eTag = request . eTag ();
//Later on check if changes exist
boolean unchanged = HttpRequest . get ( "http://google.com" )
. ifNoneMatch ( eTag )
. notModified ();
HttpRequest request = HttpRequest . get ( "http://google.com" );
//Tell server to gzip response and automatically uncompress
request . acceptGzipEncoding (). uncompress ( true );
String uncompressed = request . body ();
System . out . println ( "Uncompressed response is: " + uncompressed );
HttpRequest request = HttpRequest . get ( "https://google.com" );
//Accept all certificates
request . trustAllCerts ();
//Accept all hostnames
request . trustAllHosts ();
HttpRequest request = HttpRequest . get ( "https://google.com" );
//Configure proxy
request . useProxy ( "localhost" , 8080 );
//Optional proxy basic authentication
request . proxyBasic ( "username" , "p4ssw0rd" );
int code = HttpRequest . get ( "http://google.com" ). followRedirects ( true ). code ();
Ingin menggunakan perpustakaan ini dengan OkHttp? Baca di sini.
HttpRequest . setConnectionFactory ( new ConnectionFactory () {
public HttpURLConnection create ( URL url ) throws IOException {
if (! "https" . equals ( url . getProtocol ()))
throw new IOException ( "Only secure requests are allowed" );
return ( HttpURLConnection ) url . openConnection ();
}
public HttpURLConnection create ( URL url , Proxy proxy ) throws IOException {
if (! "https" . equals ( url . getProtocol ()))
throw new IOException ( "Only secure requests are allowed" );
return ( HttpURLConnection ) url . openConnection ( proxy );
}
});