satu.
1. Tulis kelas alat httprequestutils, termasuk permintaan pos dan mendapatkan permintaan
paket com.brainlong.framework.util.httpClient; import net.sf.json.JSONObject;import org.apache.commons.httpclient.HttpStatus;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.stringentity; import org.apache.http.impl.client.defaulThttpClient; import org.apache.http.util.entityutils; import org.slf4j.logger; impor org.slf4j.logger; impor java.io.ioException; impor java.net.urldecoder; kelas publik httprequestutils {private static logger logger = loggerFactory.getLogger (httprequesTutils.class); // log/** * httppost * @param url path * @param jsonparam parameter * @return */public static jsonObject httppost (string url, jsonObject jsonparam) {return httppost (url, jsonparam, false); } /*** Posting Permintaan* @param URL Alamat URL* @param JsonParam Parameter* @param NoNeedResponse Tidak perlu mengembalikan hasil* @return* /public static jsonObject httpppost (string url, jsonObject jsonparam, boolean noNeedresponse) {// Posting returner hasil retrect /boolean noNeedResponse) {// Posting return returneRS Hasil REKSRECTPIENT, boolean noNeedResponse) {// Posting Return Returns Hasil Hasil Posting = Defaulthttpclient (); JsonObject JsonResult = null; Metode httppost = httpppost baru (url); coba {if (null! = jsonParam) {// selesaikan entitas stringEntity masalah yang kacau Cina = stringEntity baru (jsonparam.toString (), "UTF-8"); entity.setContentEncoding ("UTF-8"); entity.setContentType ("Application/JSON"); method.setentity (entitas); } Httpresponse hasil = httpclient.execute (metode); url = urldecoder.decode (url, "UTF-8"); / ** Permintaan itu berhasil dikirim dan menerima respons **/ if (result.getStatusLine (). GetStatusCode () == 200) {string str = ""; Coba { / ** Baca data string JSON yang dikembalikan oleh server ** / str = entityutils.toString (result.getEntity ()); if (noNeedResponse) {return null; } / ** Konversi string JSON ke objek JSON ** / jsonResult = jsonObject.fromObject (str); } catch (Exception e) {Logger.Error ("Pengajuan Permintaan Posting Gagal:" + url, e); }}} catch (ioException e) {logger.Error ("Posting pengiriman permintaan gagal:" + url, e); } return JsonResult; } /*** Kirimkan Permintaan Dapatkan* @param URL Path* @return* /public static jsonObject httpget (string url) {// dapatkan permintaan hasil hasil jsonObject jsonResult = null; coba {defaulthttpclient client = new DefaulThttpClient (); // Kirim Get Request HTTPGet Request = httpget baru (url); Httpresponse response = client.execute (request); / ** Permintaan itu berhasil dikirim dan menerima respons **/ if (response.getStatusLine (). GetStatusCode () == httpstatus.sc_ok) {/ ** Baca data string JSON yang dikembalikan oleh server **/ string strresult = entityutil.toString (respons.getentity ()); / ** Konversi string JSON ke objek JSON **/ JSONRESULT = jsonObject.fromObject (strResult); url = urldecoder.decode (url, "UTF-8"); } else {logger.error ("Dapatkan pengiriman permintaan gagal:" + url); }} catch (ioException e) {logger.error ("Dapatkan pengiriman permintaan gagal:" + url, e); } return JsonResult; }}2. Tulis kode bisnis untuk mengirim permintaan http
3. Direktori Pemindaian Pengendalian File Konfigurasi MVC
<!-- Automatic scan and only scan @Controller --><context:component-scan base-package="com.wiselong.multichannel" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.steretype.Controller" /></context:component-scan>
4. Terima permintaan HTTP
Menerima permintaan pos
@Controller@requestMapping (value = "/API/Platform/ExceptionCenter/ExceptionInfo") publicclassExceptionInfocontroller {// inject @AutoWiredPrivateExceptionInfobizexceptionInfobiz; header*@returnjsonObject*/@requestMapping (value = "/create", Method = requestMethod.post) publicModelandViewCreateExceptionInfo (@requestBodyStringRequestBody, httpservletrequestrequest) {jsonobjectjsonobject ct = jsonObject.fromObject (requestbody); comExceptionInfocomExceptionInfo = newcomexceptionInfo (); comExceptionInfo.setProjectName (jsonObject. getString ("ProjectName")); comExceptionInfo.settagname (jsonObject.getString ("ProjectName")); comExceptionInfo.settagname (jsonObject.getstr ing ("tagname")); ExceptionInfobiz.insert (comexceptionInfo); // mengembalikan hasil permintaan jsonobjectresult = newjsonObject (); respons.put ("Success", "true"); returnNewelandView ("", responseututilshelper.jsonsuccess (result.tostring ("") (responseutilshelper.jsonsuccess (result.tostring ("") ();Menerima permintaan mendapatkan
@Controller@requestMapping (value = "/API/Platform/MessageCenter/Message/SMS") publicClasssMsController {@AutowiredSmsendBizSMSSendBiz;/*** Terima nomor ponsel dan masukkan catatan ke SMS Kirim tabel*@paramrequestbody Permintaan Pesan Konten*Paramrequest Permintaan Paramrequest SMS header*@returnjsonObject*/@requestMapping (value = "/send", method = requestMethod.get) publicmodelandviewSendsms (@requestBodystringRequestBody, httpservletrequestrequest) {// Dapatkan parameter yang ditransmisikan setelah permintaan URL dan URL dan URL permintaan) StringUrl = request.getRequestUrl ()+"?"+Request.getQueryString (); url = buildequesturl.decodeUrl (url); stringtelephone = requestutils.getStringValue (request, "telephon e "); stringContent = requestutils.getStringValue (permintaan," konten "); smssendbiz.insertttmsququququququququ (telepon, konten); returnNewModelandView (" ", responseutilshelper.jsonResult (" ", true));}}dua.
mendapatkan
imporjava.io.bufferedreader; importjava.io.ioException; importjava.io.inputStream; importjava.io.inputStreamreader; importorg.apache.commons.httpclient.httpclient; impor org.apache.commons.httpclient.httpmethod; importorg.apache.commons.httpclient.methods.getmethod; publicclassh_client_get {publicstaticvoidMain (string [] args) throwsioexcep tion {// objek kelas baru httpclientClient = newHttpclient (); // Gunakan metode GET untuk berinteraksi dengan server URL // httpmethodMethod = newGetMethod ("http:/192.168.111.128/bak/regist.phpin=ad=eMail=RICMIN@adpasswMin d = 1234567 & re_password = 1234567 & username = admin & nickname = admin "); httpmethodmethod = newGetMethod (" http://192.168.111.128/bak/login.php?username= ");//Use The Clifer To The Clien To The Clien To The Cliens To The Clien.php?username=");//The Methon .executeMethod (Metode); // Data Stream Output // Method.getResponseBodyStream Buat Objek Stream Byte sebagai InputStreamInputStreampStream = Method.getResponseBodyStream (); // InputStreader (InputStream AM) Acara Byte dikonversi ke dalam karakter BuffedReadReader (InputStream AM) dengan stream byte dikonversi ke dalam karakter BuffedReader (inputStream AM) dengan stream byte dikonversi ke dalam karakter BuffedReader (InputStream AM) APPEXTEGED AMPERBUMED (); InputReadREADER (INPUTREAM AM) APPEXTER BURAGETEGED ADAGREAM (). BufferedReaderBr = newBufferedReader (newInputStreamReader (inputStream, "UTF-8")); //StringBuffer is a string variable, and its object can be expanded and modified to create an empty StringBuf fer class object StringBufferstringBuffer=newStringBuffer();//Define string constant Stringstr="";//Assigning a string stream to str string constant str does not equal empty output while ((str=br.readLine()))!=null){//StringBuffer is a string variable, and Objeknya dapat ditambah dan dimodifikasi untuk menetapkan data STR ke StringBuffersTringBuffer.append (str);} // output StringBuffersySyStem.out.println (StringBuffer.ToString ()); // Tutup metode httpClient connection Method.ReleAseConnection ();}}}}}}}}}}}}pos
importjava.io.bufferedReader; importjava.io.ioexception; importjava.io.inputstream; importjava.io.inputStreamReader; importorg.apache.commons.httpclient.methods.postmethod; importorg.apache.commons.htpclient.methods.postmethod; importorg.apache.commons.htpclient.hthods.postmethod; BlicstaticVoidMain (String [] args) ThrowsioException {httpClient = newHttpClient (); postmethodmethod = newPostMethod ("http://192.168.111.128/bak/login_post.php");//field dari field of "); //1168 Key = ValueNamevaluePair [] date = {newnamevaluePair ("username", "admin"), newnamevaluePair ("kata sandi", "123457")}; // Metode menggunakan metode yang sama. InputStreamInputStream = method.getResponseBodyAsstream (); bufferedReaderbr = newBufferedRead er(newInputStreamReader(inputStream,"UTF-8"));StringBufferstringBuffer=newStringBuffer();Stringstr="";while((str=br.readLine())!=null){stringBuffer.append(str);}System.out.println(stringBuffer.toString()); method.releaseConnection ();}}tiga.
Saya tidak perlu mengatakan lebih banyak tentang pentingnya protokol HTTP. Dibandingkan dengan koneksi URL yang dilengkapi dengan JDK tradisional, httpClient meningkatkan kemudahan penggunaan dan fleksibilitas (perbedaan spesifik akan dibahas nanti). Ini tidak hanya memudahkan klien untuk mengirim permintaan HTTP, tetapi juga memfasilitasi antarmuka uji pengembang (berdasarkan protokol HTTP), yang meningkatkan efisiensi pengembangan dan juga memfasilitasi ketahanan kode. Oleh karena itu, sangat penting dan wajib untuk menguasai httpclient. Setelah menguasai HTTPClient, saya percaya bahwa pemahaman saya tentang protokol HTTP akan lebih mendalam.
1. Pendahuluan
HTTPClient adalah sub-proyek di bawah Apache Jakarta Common untuk memberikan toolkit pemrograman klien yang efisien dan kaya fitur yang mendukung protokol HTTP, dan mendukung versi terbaru dan saran dari protokol HTTP. HTTPClient telah digunakan dalam banyak proyek, seperti dua proyek open source terkenal lainnya di Apache Jakarta, Cactus dan HTMLunit, keduanya menggunakan HTTPClient.
2. Karakteristik
1. Bahasa Java murni berbasis standar. Diimplementasikan http1.0 dan http1.1
2. Semua metode HTTP (dapatkan, posting, put, hapus, kepala, opsi, dan jejak) diimplementasikan dalam struktur berorientasi objek yang dapat diperluas.
3. Mendukung protokol https.
4. Tetapkan koneksi transparan melalui proxy HTTP.
5. Gunakan metode Connect untuk membuat koneksi HTTPS ke terowongan melalui proxy HTTP.
6. Basic, Digest, NTLMV1, NTLMV2, Sesi NTLM2, Skema Sertifikasi Snpnego/Kerberos.
7. Solusi Otentikasi Kustom Plug-In.
8. Pabrik soket portabel dan andal membuatnya lebih mudah untuk menggunakan solusi pihak ketiga.
9. Connection Manager mendukung aplikasi multi-threaded. Ini mendukung pengaturan jumlah koneksi maksimum, dan juga mendukung pengaturan jumlah maksimum koneksi per host, menemukan dan menutup koneksi yang kadaluwarsa.
10. Secara otomatis menangani cookie di set-Cookies.
11. Kebijakan Cookie Kustom Plugin.
12. Aliran output permintaan dapat mencegah isi aliran dari buffered langsung ke server soket.
13. Aliran respons input dapat secara efektif membaca konten yang sesuai langsung dari server soket.
14. Simpan koneksi persisten dengan Keepalive di http1.0 dan http1.1.
15. Langsung dapatkan kode respons dan header yang dikirim oleh server.
16. Atur kemampuan untuk menghitung waktu koneksi.
17. Dukungan eksperimental untuk caching respons http1.1.
18. Kode Sumber tersedia secara gratis berdasarkan lisensi Apache.
3. Cara menggunakan
Sangat mudah untuk menggunakan HTTPClient untuk mengirim permintaan dan menerima tanggapan, dan umumnya memerlukan langkah -langkah berikut.
1. Buat objek httpClient.
2. Buat instance dari metode permintaan dan tentukan URL permintaan. Jika Anda perlu mengirim permintaan GET, buat objek httpget; Jika Anda perlu mengirim permintaan posting, buat objek httppost.
3. Jika Anda perlu mengirim parameter permintaan, Anda dapat menghubungi metode setParams (hetpparams params) yang umum ke httpget dan httppost untuk menambahkan parameter permintaan; Untuk objek httppost, Anda juga dapat memanggil metode setEntity (httpentity entity) untuk mengatur parameter permintaan.
4. Hubungi eksekusi (permintaan httpurirequest) dari objek httpClient untuk mengirim permintaan, dan metode ini mengembalikan httpresponse.
5. Memanggil getallHeaders (), GetHeaders (nama string) dan metode lain bisa mendapatkan header respons server; Memanggil metode httpresponse's getEntity () bisa mendapatkan objek httpentity, yang membungkus konten respons server. Program dapat memperoleh konten respons server melalui objek ini.
6. Lepaskan koneksi. Koneksi harus dirilis terlepas dari apakah metode eksekusi berhasil atau tidak.
Iv. Contoh
paket com.test; impor java.io.file; impor java.io.fileInputStream; impor java.io.ioException; impor java.io.unsupportedencodingException; impor java.security.keymanagementexception; impor java.security.keystore; impor java.security.keystoreexception; impor java.security.nosuchalgorithmException; impor java.security.cert.certificateException; impor java.util.arraylist; impor java.util.list; impor javax.net.ssl.sslcontext; impor org.apache.http.httpentity; impor org.apache.http.namevaluepair; impor org.apache.http.parseexception; impor org.apache.http.client.clientprotocolexception; impor org.apache.http.client.entity.urlencodedformentity; impor org.apache.http.client.methods.closeableHttpresponse; impor org.apache.http.client.methods.httpget; impor org.apache.http.client.methods.httppost; impor org.apache.http.conn.ssl.sslconnectionCocketFactory; impor org.apache.http.conn.ssl.sslcontexts; impor org.apache.http.conn.ssl.trustselfSignedStrategy; impor org.apache.http.entity.contenttype; impor org.apache.http.entity.mime.multipartentitybuilder; impor org.apache.http.entity.imime.content.fileBody; impor org.apache.http.entity.mime.content.stringbody; impor org.apache.http.impl.client.closeableHttpClient; impor org.apache.http.impl.client.httpClients; impor org.apache.http.impl.client.httpClients; impor org.apache.http.message.basicnamevaluePair; impor org.apache.http.util.entityutils; impor org.junit.test; kelas publik httpclienttest {@test public void junittest () {get (); } / ** * httpClient Connection ssl * / public void ssl () {closeAdleHttpClient httpclient = null; coba {keystore trustStore = keystore.getInstance (keystore.getDefaultType ()); FileInputStream instream = new fileInputStream (file baru ("d: //tomcat.keystore")); coba {54. // Muat keystore d: //tomcat.keystore truststore.load (instream, "123456" .tochararray ()); } catch (CertificateException e) {E.PrintStackTrace (); } akhirnya {coba {enterstream.close (); } catch (pengecualian abaikan) {}} // Percayai CA Anda sendiri dan semua sertifikat yang ditandatangani sendiri sslcontext sslcontext = sslcontexts.custom (). LoadTrustMaTerial (truststore, trustSelfSignedStrategy ()). Build (); // Hanya penggunaan protokol TLSV1 SSLConnectionCockEtFactory sslsf = SSLConnectionCockeTfactory baru (sslcontext, string baru [] {"tlsv1"}, null, sslconnectionockfactory.browser_compatible_compatible_hostname_hostname_hostnome; httpClient = httpclients.custom (). setsslsocketfactory (sslsf) .build (); // Buat permintaan http (Get Method) httpget httpget = httpget baru ("https: // localhost: 8443/mydemo/ajax/serivcej.action"); System.out.println ("Execting Request" + httpget.getRequestline ()); CloseableHttpresponse response = httppclient.execute (httpget); coba {httpentity entity = response.getEntity (); System.out.println ("----------------------------------------"); System.out.println (response.getStatusLine ()); if (entitas! = null) {System.out.println ("Panjang konten respons:" + entity.getContentLength ()); System.out.println (entityutils.tostring (entitas)); Entityutils.consume (entitas); }} akhirnya {response.close (); }} catch (parseException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } catch (KeyManagementException e) {E.PrintStackTrace (); } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (keystoreException e) {e.printstacktrace (); } akhirnya {if (httpclient! = null) {coba {httpclient.close (); } catch (ioException e) {e.printstacktrace (); }}}}} / ** * Kirim formulir di pos (simulasikan permintaan login pengguna) * / public void postform () {// Buat instance httpClient default. CloseableHttpClient httpClient = httpclients.createdefault (); // Buat httppost httppost httppost = httppost baru ("http: // localhost: 8080/mydemo/ajax/serivcej.action"); // Buat daftar antrian parameter <namevaluePair> forparams = new ArrayList <namevaluePair> (); formparams.add (basicnamevaluePair baru ("nama pengguna", "admin")); formparams.add (basicnamevaluePair baru ("kata sandi", "123456")); Urlencodedformentity uefentity; coba {uEfentity = UrlencodedFormentity baru (formparams, "UTF-8"); httppost.setentity (uefentity); System.out.println ("Execting Request" + httppost.geturi ()); CloseableHttpresponse response = httpclient.execute (httppost); coba {httpentity entity = response.getEntity (); if (entitas! = null) {System.out.println ("--------------------------------------"); System.out.println ("Konten Respons:" + Entityutils.tostring (Entity, "UTF-8")); System.out.println ("--------------------------------------"); }} akhirnya {response.close (); }} catch (clientprotocolexception e) {e.printstacktrace (); } catch (UnsupportedEncodingException E1) {E1.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {// tutup koneksi dan lepaskan sumber daya coba {httpclient.close (); } catch (ioException e) {e.printstacktrace (); }}} / *** Kirim permintaan pos untuk mengakses aplikasi lokal dan mengembalikan hasil yang berbeda sesuai dengan parameter yang dilewatkan* / public void post () {// Buat instance httpClient default. CloseableHttpClient httppclient = httpclients.createdefault (); // Buat httppost httppost httppost = httppost baru ("http: // localhost: 8080/mydemo/ajax/serivcej.action"); // Buat daftar antrian parameter <namevaluePair> forparams = new ArrayList <namevaluePair> (); forparams.add (basicnamevaluePair baru ("type", "house")); Urlencodedformentity uefentity; coba {uEfentity = UrlencodedFormentity baru (forparams, "UTF-8"); httppost.setentity (uefentity); System.out.println ("Execting Request" + httppost.geturi ()); CloseableHttpresponse response = httpclient.execute (httppost); coba {httpentity entity = response.getEntity (); if (entitas! = null) {System.out.println ("--------------------------------------"); System.out.println ("Konten Respons:" + Entityutils.tostring (Entity, "UTF-8")); System.out.println ("--------------------------------------"); }} akhirnya {response.close (); }} catch (clientprotocolexception e) {e.printstacktrace (); } catch (UnsupportedEncodingException E1) {E1.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {// tutup koneksi dan lepaskan sumber daya coba {httpclient.close (); } catch (ioException e) {e.printstacktrace (); }}} / *** Kirim permintaan get* / public void get () {closeAdleHttpClient httpclient = httpclients.createdefault (); Coba {// Buat httpget. Httpget httpget = httpget baru ("http://www.baidu.com/"); System.out.println ("Execting Request" + httpget.geturi ()); // Jalankan permintaan GET. CloseableHttpresponse response = httpclient.execute (httpget); coba {// dapatkan entitas respons httpentity entity = response.getEntity (); System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Print response System.out.println ("Panjang Konten Respons:" + Entity.GetContentLength ()); System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } catch (ioException e) {e.printstacktrace (); } akhirnya {// tutup koneksi dan lepaskan sumber daya coba {httpclient.close (); } catch (ioException e) {e.printstacktrace (); }}} / *** Unggah file* / public void unggah () {closeAdleHttpClient httpClient = httpclients.createdefault (); coba {httppost httppost = httppost baru ("http: // localhost: 8080/mydemo/ajax/serivcefile.action"); Filebody bin = filebody baru (file baru ("f: //image//sendpix0.jpg")); Stringbody comment = new stringbody ("File biner dari beberapa jenis", contentType.text_plain); Httpentity reqentity = multipartentitybuilder.create (). AddPart ("bin", bin) .addpart ("komentar", komentar) .build (); httppost.setentity (reqentity); System.out.println ("Execting Request" + httppost.getRequestline ()); CloseableHttpresponse response = httpclient.execute (httppost); coba {System.out.println ("----------------------------------------"); System.out.println (response.getStatusLine ()); Httpentity resentity = response.getEntity (); if (resentity! = null) {system.out.println ("Panjang konten respons:" + resentity.getContentLength ()); } Entityutils.consume (densentity); } akhirnya {response.close (); }} catch (clientprotocolexception e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {coba {httpclient.close (); } catch (ioException e) {e.printstacktrace (); }}}}}} </namevaluePair> </namevaluePair> </namevaluePair>Contoh sederhana di atas dari proses pengiriman permintaan httpClient dan menerima hasil permintaan di Java adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.