Saya bertanya-tanya apakah ada tipe enum di beberapa perpustakaan kelas Java standar yang mendefinisikan konstanta simbolik untuk semua kode respons HTTP yang valid. Ini harus mendukung konversi ke / dari nilai integer yang sesuai.
Saya men-debug beberapa kode Java yang menggunakan javax.ws.rs.core.Response.Status. Ini berfungsi, tetapi hanya mendefinisikan sekitar setengah dari kode respons HTTP yang valid.
Antarmuka
javax.servlet.http.HttpServletResponse
dari servlet API memiliki semua kode respons dalam bentukint
nama konstantaSC_<description>
. Lihat http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.htmlsumber
Nah, ada konstanta statis dari nilai integer yang tepat di kelas HttpURLConnection
sumber
java.net.HttpURLConnection.HTTP_BAD_REQUEST
Jika Anda menggunakan Spring, rilis 3.x memiliki apa yang Anda cari: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
sumber
HttpStatus.XXX.value()
untuk mendapatkan int.Jika Anda menggunakan Netty , Anda dapat menggunakan:
sumber
Semua orang tampaknya mengabaikan bagian "enum type" dari pertanyaan Anda.
Meskipun tidak ada sumber kanonik untuk Kode Status HTTP, ada cara sederhana untuk menambahkan konstanta Status yang Anda perlukan ke konstanta yang disediakan dengan
javax.ws.rs.core.Response.Status
tanpa menambahkan dependensi tambahan pada proyek Anda.javax.ws.rs.core.Response.Status
hanyalah salah satu implementasi darijavax.ws.rs.core.Response.StatusType
antarmuka. Anda hanya perlu membuat enum implementasi Anda sendiri dengan definisi untuk Kode Status yang Anda inginkan.Pustaka inti seperti Javax, Jersey, dll. Ditulis ke antarmuka
StatusType
bukan implementasiStatus
(atau mereka tentu harus ). Karena Status enum yang baru Anda implementasikan,StatusType
ia dapat digunakan di mana pun Anda akan menggunakanjavax.ws.rs.core.Response.Status
konstanta.Ingatlah bahwa kode Anda sendiri juga harus ditulis ke
StatusType
antarmuka. Ini akan memungkinkan Anda untuk menggunakan kedua Kode Status Anda sendiri di samping yang "standar".Berikut adalah intisari dengan implementasi sederhana dengan konstanta yang ditentukan untuk Kode Status "Informational 1xx": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a
sumber
Gunakan kelas javax.servlet.http.HttpServletResponse
Contoh:
sumber
1) Untuk mendapatkan teks alasan jika Anda hanya memiliki kode, Anda dapat menggunakan:
Di mana
httpCode
akan menjadi kode alasan yang Anda dapatkan dari respons HTTP.Lihat https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/EnglishReasonPhraseCatalog.html untuk detail
2) Untuk mendapatkan kode alasan jika Anda hanya memiliki teks, Anda dapat menggunakan
BasicHttpResponse
.Lihat di sini untuk detail: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
sumber
Lihat juga kelas Restlet Status:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
sumber
Penyedia terbaik untuk konstanta kode status http cenderung kelas org.eclipse.jetty.http.HttpStatus Jetty karena:
Satu-satunya hal yang akan saya perbaiki: letakkan nomor kode status di depan deskripsi teks untuk membuat pencarian penyelesaian otomatis lebih nyaman ketika Anda mulai dengan kode.
sumber
Pilihan lain adalah menggunakan
HttpStatus
kelas dari Apache commons-httpclient yang memberikan Anda berbagai status Http sebagai konstanta.sumber