Di Jawa Cara Membaca Konten File GitHub menggunakan utilitas HttpURLConnection + ConvertStreamToString()
Diterbitkan: 2017-12-30
Dalam Tutorial Java ini kita akan membahas langkah-langkah untuk mengambil konten URL GitHub menggunakan HttpURLConnection. Dengan kata lain di bawah ini adalah Java API untuk mendapatkan konten file dari GitHub.
Setiap instance HttpURLConnection digunakan untuk membuat satu permintaan tetapi koneksi jaringan yang mendasarinya ke server HTTP dapat dibagikan secara transparan oleh instance lain. getHeaderFields() Mengembalikan Peta yang tidak dapat dimodifikasi dari bidang header. Kunci Peta adalah String yang mewakili nama bidang header respons. Setiap nilai Peta adalah Daftar String yang tidak dapat dimodifikasi yang mewakili nilai bidang yang sesuai.
Sekarang mari kita mulai:
- Buat kelas
CrunchifyLoadGithubContent.java - Kami akan mengunduh konten: https://raw.githubusercontent.com/Crunchify/wp-super-cache/master/wp-cache.php (dari plugin: WP Super Cache Github Repo)
- Dapatkan semua Bidang Header menggunakan getHeaderFields() API. Kami memerlukan ini untuk mengetahui apakah URL di atas atau URL lainnya dialihkan atau tidak? Catatan: Ini sepenuhnya opsional. Dalam hal pengalihan HTTP 301 dan HTTP 302 ini akan membantu.
- Buat API
crunchifyGetStringFromStream( InputStream crunchifyStream)untuk mengonversi Stream ke String. - Cetak output yang sama ke Console.
CATATAN: Status HTTP 301 berarti sumber daya (halaman) dipindahkan secara permanen ke lokasi baru. 302 adalah bahwa ia meminta sumber daya berada sementara di bawah URI yang berbeda. Sebagian besar 301 vs 302 penting untuk pengindeksan di mesin pencari karena perayap mereka memperhitungkan ini dan mentransfer peringkat halaman saat menggunakan 301.
Juga, ada asumsi bahwa – URL GitHub harus publik.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package crunchify . com . tutorial ; import java . io . BufferedReader ; import java . io . IOException ; import java . io . InputStream ; import java . io . InputStreamReader ; import java . io . Reader ; import java . io . StringWriter ; import java . io . Writer ; import java . net . HttpURLConnection ; import java . net . URL ; import java . util . List ; import java . util . Map ; /** * @author Crunchify.com * */ public class CrunchifyLoadGithubContent { public static void main ( String [ ] args ) throws Throwable { String link = "https://raw.githubusercontent.com/Crunchify/All-in-One-Webmaster/master/all-in-one-webmaster-premium.php" ; URL crunchifyUrl = new URL ( link ) ; HttpURLConnection crunchifyHttp = ( HttpURLConnection ) crunchifyUrl . openConnection ( ) ; Map < String , List <String> > crunchifyHeader = crunchifyHttp . getHeaderFields ( ) ; // If URL is getting 301 and 302 redirection HTTP code then get new URL link. // This below for loop is totally optional if you are sure that your URL is not getting redirected to anywhere for ( String header : crunchifyHeader . get ( null ) ) { if ( header . contains ( " 302 " ) | | header . contains ( " 301 " ) ) { link = crunchifyHeader . get ( "Location" ) . get ( 0 ) ; crunchifyUrl = new URL ( link ) ; crunchifyHttp = ( HttpURLConnection ) crunchifyUrl . openConnection ( ) ; crunchifyHeader = crunchifyHttp . getHeaderFields ( ) ; } } InputStream crunchifyStream = crunchifyHttp . getInputStream ( ) ; String crunchifyResponse = crunchifyGetStringFromStream ( crunchifyStream ) ; System . out . println ( crunchifyResponse ) ; } // ConvertStreamToString() Utility - we name it as crunchifyGetStringFromStream() private static String crunchifyGetStringFromStream ( InputStream crunchifyStream ) throws IOException { if ( crunchifyStream ! = null ) { Writer crunchifyWriter = new StringWriter ( ) ; char [ ] crunchifyBuffer = new char [ 2048 ] ; try { Reader crunchifyReader = new BufferedReader ( new InputStreamReader ( crunchifyStream , "UTF-8" ) ) ; int counter ; while ( ( counter = crunchifyReader . read ( crunchifyBuffer ) ) ! = - 1 ) { crunchifyWriter . write ( crunchifyBuffer , 0 , counter ) ; } } finally { crunchifyStream . close ( ) ; } return crunchifyWriter . toString ( ) ; } else { return "No Contents" ; } } } |
Saat men-debug, saya mendapatkan ini sebagai bagian dari nilai crunchifyHeader . Juga, tutorial ini berlaku untuk repo publik Bitbucket juga.

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
{ null = [ HTTP / 1.1200OK // this is what we are checking in above for loop. If 301 or 302 then get new URL. ] , X - Cache - Hits = [ 1 ] , ETag = [ "94a3eb8b3b5505f746aa8530667969673a8e182d" ] , Content - Length = [ 24436 ] , X - XSS - Protection = [ 1 ; mode = block ] , Expires = [ Mon , 27Oct201420 : 00 : 31GMT ] , X - Served - By = [ cache - dfw1825 - DFW ] , Source - Age = [ 14 ] , Connection = [ Keep - Alive ] , Server = [ Apache ] , X - Cache = [ HIT ] , Cache - Control = [ max - age = 300 ] , X - Content - Type - Options = [ nosniff ] , X - Frame - Options = [ deny ] , Strict - Transport - Security = [ max - age = 31536000 ] , Vary = [ Authorization , Accept - Encoding ] , Access - Control - Allow - Origin = [ https : //render.githubusercontent.com ] , Date = [ Mon , 27Oct201419 : 55 : 31GMT ] , Via = [ 1.1varnish ] , Keep - Alive = [ timeout = 10 , max = 50 ] , Accept - Ranges = [ bytes ] , Content - Type = [ text / plain ; charset = utf - 8 ] , Content - Security - Policy = [ default - src 'none' ] } |

