sopyanopan /
https-injectotor.com
Server HTTP Android Server web multithreaded kecil namun kuat yang ditulis sepenuhnya di Java SE dan kemudian diporting ke Android. Status Build codecov Lencana Kodifikasi Server mengimplementasikan sebagian besar spesifikasi HTTP 1.1 dan menyediakan custom servlet API yang dapat digunakan untuk menangani halaman dinamis. API servlet dirancang setelah javax.servletAPI resmi namun tidak kompatibel. Laman dinamis mendukung cookie, sesi, unggahan file, dan hal lain untuk membangun aplikasi web umum. Fitur utama Membangun aplikasi The http subproject dan ide di baliknya Pengujian mutasi Menjalankan server mandiri (CLI) Demo Kode sampel Server Hello World Meminta filter pencatatan Membangun deskriptor penyebaran Layar 500 jejak tumpukan kesalahan di browser Contoh skrip untuk mengirim SMS menggunakan utilitas wget command line Fitur utama Jejak kecil, tidak memerlukan perpustakaan eksternal Menangani permintaan HTTP dalam utas yang terpisah Menyediakan API servlet khusus untuk menghasilkan konten dinamis Mendukung metode GET, POST, HEAD (atau lebih, tergantung pada konfigurasi) Mendukung tipe transfer chunked Menyediakan dukungan penuh untuk tipe mime (menggunakan Apache seperti mime.type) Mendukung pengunggahan file yang di-buffer (permintaan multipart), cookie, sesi tetap Mendukung porsi tubuh parsial (rentang) Dapat menyajikan konten statis baik dari sistem file dan sumber daya APK Membangun aplikasi Pembungkus Gradle yang disediakan harus digunakan untuk membuat aplikasi: ./gradlew build The http subproject dan ide di baliknya The http subproyek adalah jantung dari aplikasi dan itu adalah independen pada platform Android. Bahkan aplikasi Android hanya merupakan upaya untuk menemukan penggunaan yang lebih praktis dari implementasi protokol HTTP eksperimental. Salah satu tujuan desain adalah untuk menjaga artefak yang dihasilkan dalam ukuran kecil dan minimalis dalam hal ketergantungan pada perpustakaan lain - tidak memerlukan komponen pihak ketiga , semua implementasi protokol HTTP didasarkan pada parsing data yang dibaca dari soket TCP mentah. Semua kode aplikasi ditargetkan ke Java 7. Ini juga dikompilasi untuk Android SDK versi <19 (coba dengan sumber daya tidak didukung, gunakan IOUtilities.closeSilently (closeable) di finallyblok sebagai alternatif ketika menutup aliran). Setelah paket ro.polak.http cukup dewasa maka akan dirilis sebagai artifak independen. Subproyek dapat diuji dengan cara berikut: ./gradlew: http: bersih: http: periksa -PskipAndroidBuild Kode paket asli telah direfaktor dan ditutup dengan tes unit dan integrasi. Cakupan kode harus dijaga di atas 90%. Pengujian mutasi Tes mutasi dapat dijalankan dengan mengeksekusi perintah berikut: ./gradlew: http: clean: http: pitest -PskipAndroidBuild Hasilnya kemudian dapat ditemukan di bawah http/build/reports/pitest/ro.polak.http/index.htmldan http/build/reports/pitest/ro.polak.http/mutation.xml. Menjalankan server mandiri (CLI) Server mandiri dapat digunakan untuk menggabungkan httpsubproject ke dalam implementasi server runnable. Sub proyek CLI juga independen pada platform Android, tidak dibundel dengan APK utama. ./gradlew: cli: bootRun -PskipAndroidBuild Anda juga bisa membuat satu "uber-jar" dan menggunakannya sebagai aplikasi yang berdiri sendiri: ./gradlew: cli: fatJar -PskipAndroidBuild Artefak yang dihasilkan kemudian dapat diambil ./cli/build/libs/cli-all.jar. Stoples server yang berdiri sendiri dapat dijalankan pada mesin apa pun dengan perintah berikut: java -jar ./cli/build/libs/cli-all.jar Antarmuka baris perintah0 Demo Aplikasi demo secara otomatis disebarkan ke Heroku dan dapat dihubungi di: https://android-http-server-demo.herokuapp.com/example/ . Harap dicatat aplikasi dikerahkan tidak mengandung satu admin aplikasi karena itu hanya tersedia untuk Android. Lihat Procfile untuk deskripsi penerapan. Kode sampel Server Hello World contoh paket ; impor ro.polak.http.servlet.HttpServletRequest ; impor ro.polak.http.servlet.HttpServletResponse ; import ro.polak.http.servlet.HttpServlet ; kelas publik HelloWorld memperluas HttpServlet { @ Override public kekosongan layanan ( HttpServletRequest request , HttpServletResponse respon ) { tanggapan . getWriter () . print ( " Hello World! " ); } } Meminta filter pencatatan contoh paket ; impor java.io.IOException ; impor ro.polak.http.exception.ServletException ; impor ro.polak.http.servlet.Filter ; impor ro.polak.http.servlet.FilterChain ; import ro.polak.http.servlet.FilterConfig ; impor ro.polak.http.servlet.HttpServletRequest ; impor ro.polak.http.servlet.HttpServletResponse ; public class RequestLoggingFilter mengimplementasikan Filter { swasta statis akhir Logger LOGGER = Logger . getLogger ( RequestLoggingFilter . class . getName ()); @Override public void init ( FilterConfig filterConfig ) melempar ServletException { // Tidak melakukan apa-apa } @ Override public kekosongan doFilter ( HttpServletRequest request , HttpServletResponse respon , filterChain filterChain ) throws IOException , ServletException { LOGGER . baik ( " Penanganan permintaan masuk " + permintaan . getRequestURL ()); filterChain . doFilter (permintaan, tanggapan); } } Contoh servlets dapat ditemukan di http / src / main / java / example . Penggunaan filter yang praktis dapat diperiksa di SecurityFilter.java dan LogoutFilter.java dari aplikasi admin. Membangun deskriptor penyebaran DeploymentDescriptorBuilder adalah alternatif API untuk web.xmlpendekatan tradisional yang bertujuan untuk membuat pemetaan servlet membangun dan menyaring pendaftaran menjadi mudah. Lihat contoh kode di bawah ini. contoh paket ; import java.util.List ; import java.util.regex.Pattern ; import ro.polak.http.configuration.DeploymentDescriptorBuilder ; import ro.polak.http.configuration.ServerConfig ; impor ro.polak.http.session.storage.SessionStorage ; class DeploymentDescriptorFactory { public List < ServletContextWrapper > buildDeploymentDescriptor ( SessionStorage sessionStorage , ServerConfig serverConfig ) { return DeploymentDescriptorBuilder . membuat() .withSessionStorage (sessionStorage) .withServerConfig (serverConfig) .addServletContext () .withContextPath ( " / contoh " ) .addFilter () .withUrlPattern ( Pattern . compile ( " ^. * $ " )) .withUrlExcludedPattern ( Pattern . compile ( " ^ / (?: Login | Logout) " )) .withFilterClass ( SecurityFilter . kelas) .akhir() .addFilter () .withUrlPattern ( Pattern . compile ( " ^ / Logout $ " )) .withFilterClass ( kelas LogoutFilter . ) .akhir() .addServlet () .withUrlPattern ( Pattern . compile ( " ^ / Index $ " )) .withServletClass ( Indeks . kelas) .akhir() .addServlet () .withUrlPattern ( Pattern . compile ( " ^ / $ " )) .withServletClass ( Indeks . kelas) .akhir() .akhir() .membangun(); } } Layar Kegiatan utama Admin Login back-office HTTP Menu back-office HTTP Akses drive back-office HTTP Statistik server back-office HTTP Kotak masuk SMS kantor HTTP 500 halaman jejak kesalahan di browser Kesalahan Servlet 500 Contoh skrip untuk mengirim SMS menggunakan utilitas baris perintah wget Jika Anda ingin mengirim SMS nyata, silakan hapus "& test = 1" dari parab POST. SERVER_IP = 192.168.1.1 ; SERVER_PORT = 8080 ; \ echo " Nomor telepon: " ; baca UNTUK ; echo " Pesan: " ; baca MESSAGE ; \ wget -qO- --post-data " ke = $ TO & message = $ MESSAGE & test = 1 " \ http: // $ SERVER_IP : $ SERVER_PORT /api/1.0/sms/send Ikon Server HTTP Android menggunakan ikon dari paket "Pertanian-Segar Web Ikon" yang dirancang dengan indah oleh FatCow Web Hosting! Kumpulan ikon ini dilisensikan di bawah Lisensi Creative Commons Attribution 3.0 .