Yang saya coba lakukan adalah mengunduh beberapa JSON dan menghapusnya menjadi objek. Saya belum bisa mengunduh JSON.
Hampir setiap contoh HttpClient tunggal yang dapat saya temukan, termasuk yang ada di situs apache terlihat seperti ...
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
public void blah() {
HttpClient client = new DefaultHttpClient();
...
}
Namun, Netbeans memberi tahu saya bahwa DefaultHttpClient
itu sudah usang. Saya sudah mencoba googling untuk DefaultHttpClient deprecated
dan banyak variasi lain yang dapat saya pikirkan dan tidak dapat menemukan hasil yang bermanfaat, jadi saya jelas kehilangan sesuatu.
Apa cara Java7 yang benar untuk mengunduh konten halaman web? Apakah benar-benar tidak ada Klien Http yang layak sebagai bagian dari bahasa? Saya merasa sulit untuk percaya.
Ketergantungan Maven saya untuk ini adalah ...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>LATEST</version>
<type>jar</type>
</dependency>
DefaultHttpClient
pasti tidak usang. Versi apa yang Anda tentukan dalam POM Anda?Jawaban:
Impor yang relevan:
Pemakaian:
EDIT (setelah saran Jules):
Saat
build()
metode mengembalikanCloseableHttpClient
yang is-aAutoClosable
, Anda bisa menempatkan deklarasi dalam pernyataan try-with-resources (Java 7+):sumber
CloseableHttpClient
, yang harus Anda tutup setelah digunakan. MenerapkanAutoCloseable
, sehingga Anda dapat menggunakannya dalam mencoba-dengan-sumber pernyataan di Jawa 7+:try (CloseableHttpClient httpclient = ...) { ... }
.create()
metode statis? Atau bisakah kita meneleponcreate()
kapan saja kita membutuhkannya? ... Btw,import org.apache.http.impl.client.HttpClientBuilder
untuk siapa saja yang membutuhkannya. [Tidak suka jawaban tanpa pernyataan impor. Jangan khawatir, saya masihIMHO jawaban yang diterima sudah benar tetapi melewatkan beberapa 'pengajaran' karena tidak menjelaskan bagaimana memunculkan jawabannya. Untuk semua kelas yang sudah usang lihatlah JavaDoc (jika Anda tidak memilikinya, unduh atau online ), itu akan memberi petunjuk pada kelas mana yang akan digunakan untuk mengganti kode lama. Tentu saja itu tidak akan memberi tahu Anda segalanya, tetapi ini adalah awal. Contoh:
Sekarang Anda memiliki kelas untuk digunakan,
HttpClientBuilder
karena tidak ada konstruktor untuk mendapatkan pembangun contoh Anda mungkin menduga bahwa harus ada metode statis sebagai gantinya:create
. Setelah Anda memiliki builder, Anda juga dapat menebak bahwa untuk sebagian besar builder ada metode build , jadi:AutoClosable:
Seperti Jules mengisyaratkan dalam komentar, kelas yang dikembalikan mengimplementasikan
java.io.Closable
, jadi jika Anda menggunakan Java 7 atau lebih baru sekarang Anda dapat melakukannya:Keuntungannya adalah Anda tidak harus berurusan dengan akhirnya dan nol.
Info relevan lainnya
Pastikan juga untuk membaca tentang penyatuan koneksi dan mengatur batas waktu .
sumber
Contoh dari Apache menggunakan ini:
Kelas
org.apache.http.impl.client.HttpClients
sudah ada sejak versi 4.3.Kode untuk
HttpClients.createDefault()
ini sama dengan jawaban yang diterima di sini.sumber
Itu menjadi usang dalam versi
4.3-alpha1
yang Anda gunakan karenaLATEST
spesifikasi versi. Jika anda melihat pada javadoc kelas, ia memberitahu Anda apa yang harus digunakan sebagai gantinya:HttpClientBuilder
.Dalam versi stabil terbaru (
4.2.3
)DefaultHttpClient
belum ditinggalkan.sumber
Coba
jcabi-http
, yang merupakan klien HTTP Java yang lancar, misalnya:Periksa juga posting blog ini: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
sumber
Saya akan menyarankan menggunakan metode di bawah ini jika Anda mencoba membaca data json saja.
sumber
DefaultHttpClient
sudah usang dan Anda menyarankan untuk menggunakannya dalam jawaban Anda ...Gunakan HttpClientBuilder untuk membangun HttpClient alih-alih menggunakan DefaultHttpClient
ex:
sumber
new HttpClientBuilder()
dan tidakHttpClientBuilder.create()
?Anda bisa menambahkan ketergantungan Maven berikut.
Anda dapat menggunakan impor berikut dalam kode java Anda.
Anda bisa menggunakan blok kode berikut dalam kode java Anda.
sumber
Ini adalah solusi yang telah saya terapkan pada masalah yang httpclient usang dalam versi android 22 ini
sumber
Untuk masalah asli, saya akan meminta Anda untuk menerapkan logika di bawah ini:
sumber