JDK ให้การสนับสนุนคำขอโปรโตคอลไร้สัญชาติ (HTTP) ด้านล่างฉันจะอธิบายตัวอย่างเล็ก ๆ (ส่วนประกอบ) ที่ฉันเขียน:
ก่อนอื่นมาสร้างคลาสคำขอ (httprequester)
คลาสนี้ห่อหุ้มรหัสสำหรับ Java เพื่อใช้คำของ่าย ๆ ดังนี้:
การคัดลอกรหัสมีดังนี้:
นำเข้า java.io.bufferedreader;
นำเข้า java.io.ioException;
นำเข้า Java.io.InputStream;
นำเข้า Java.io.InputStreamReader;
นำเข้า java.net.httpurlconnection;
นำเข้า java.net.url;
นำเข้า java.nio.charset.charset;
นำเข้า java.util.map;
นำเข้า java.util.vector;
-
* วัตถุคำขอ http
-
* @author yymmiinngg
-
ชั้นเรียนสาธารณะ httprequester {
สตริงส่วนตัว defaultContentEncoding;
public httprequester () {
this.defaultContentEncoding = charset.defaultCharset (). name ();
-
-
* ส่งคำขอรับ
-
* @param urlstring
* ที่อยู่ URL
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendget (string urlstring) โยน ioexception {
ส่งคืนสิ่งนี้ส่ง (urlstring, "get", null, null);
-
-
* ส่งคำขอรับ
-
* @param urlstring
* ที่อยู่ URL
* @param params
* ชุดพารามิเตอร์
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendget (string urlstring, map <string, string> params)
โยน ioexception {
ส่งคืนสิ่งนี้ send (urlstring, "get", params, null);
-
-
* ส่งคำขอรับ
-
* @param urlstring
* ที่อยู่ URL
* @param params
* ชุดพารามิเตอร์
* คุณสมบัติ @param
* ขอแอตทริบิวต์
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendget (string urlstring, map <string, string> params,
แผนที่ <สตริงสตริง> คุณสมบัติ) พ่น IOException {
ส่งคืนสิ่งนี้ send (urlstring, "get", params, คุณสมบัติ);
-
-
* ส่งคำขอโพสต์
-
* @param urlstring
* ที่อยู่ URL
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendpost (string urlstring) โยน ioexception {
ส่งคืนสิ่งนี้ส่ง (urlstring, "โพสต์", null, null);
-
-
* ส่งคำขอโพสต์
-
* @param urlstring
* ที่อยู่ URL
* @param params
* ชุดพารามิเตอร์
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendpost (string urlstring, map <string, string> params)
โยน ioexception {
ส่งคืนสิ่งนี้ send (urlstring, "post", params, null);
-
-
* ส่งคำขอโพสต์
-
* @param urlstring
* ที่อยู่ URL
* @param params
* ชุดพารามิเตอร์
* คุณสมบัติ @param
* ขอแอตทริบิวต์
* @return วัตถุตอบสนอง
* @throws ioexception
-
public httprespons sendpost (string urlstring, map <string, string> params,
แผนที่ <สตริงสตริง> คุณสมบัติ) พ่น IOException {
ส่งคืนสิ่งนี้ send (urlstring, "post", params, คุณสมบัติ);
-
-
* ส่งคำขอ HTTP
-
* @param urlstring
* @return reflection object
* @throws ioexception
-
httprespons ส่วนตัวส่ง (string urlstring, วิธีการสตริง,
แผนที่ <สตริง, สตริง> พารามิเตอร์, แผนที่ <สตริง, สตริง> คุณสมบัติ)
โยน ioexception {
httpurlConnection urlConnection = null;
if (method.equalsignorecase ("รับ") && พารามิเตอร์! = null) {
StringBuffer param = new StringBuffer ();
int i = 0;
สำหรับ (คีย์สตริง: parameters.keyset ()) {
ถ้า (i == 0)
param.append ("?");
อื่น
param.append ("&");
param.append (คีย์) .append ("="). ผนวก (parameters.get (คีย์));
i ++;
-
urlString += param;
-
url url = url ใหม่ (urlstring);
urlConnection = (httpurlConnection) url.openconnection ();
urlConnection.setRequestMethod (วิธีการ);
urlConnection.setDoOutput (จริง);
urlConnection.setDoInput (จริง);
urlConnection.setUsecaches (เท็จ);
if (คุณสมบัติ! = null)
สำหรับ (คีย์สตริง: properties.keyset ()) {
urlConnection.addrequestProperty (คีย์, คุณสมบัติ. get (คีย์));
-
if (method.equalsignorecase ("post") && พารามิเตอร์! = null) {
StringBuffer param = new StringBuffer ();
สำหรับ (คีย์สตริง: parameters.keyset ()) {
param.append ("&");
param.append (คีย์) .append ("="). ผนวก (parameters.get (คีย์));
-
urlConnection.getOutputStream (). เขียน (param.toString (). getBytes ());
urlConnection.getOutputStream (). flush ();
urlConnection.getOutputStream (). Close ();
-
ส่งคืนสิ่งนี้ makecontent (urlstring, urlconnection);
-
-
* รับวัตถุตอบกลับ
-
* @param urlconnection
* @return วัตถุตอบสนอง
* @throws ioexception
-
httprespons ส่วนตัว makecontent (string urlstring,
httpurlconnection urlconnection) พ่น ioexception {
httprespons httpresponser = new httprespons ();
พยายาม {
inputStream ใน = urlConnection.getInputStream ();
bufferedReader bufferedReader = new bufferedReader (
ใหม่ InputStreamReader (IN));
httpresponser.contentCollection = เวกเตอร์ใหม่ <string> ();
StringBuffer temp = new StringBuffer ();
สตริงบรรทัด = bufferedReader.readline ();
ในขณะที่ (บรรทัด! = null) {
httpresponser.contentcollection.add (บรรทัด);
temp.append (บรรทัด) .append ("/r/n");
line = bufferedReader.readline ();
-
bufferedReader.close ();
string ecod = urlConnection.getContentEncoding ();
if (ecod == null)
ecoD = this.defaultContentencoding;
httpresponser.urlstring = urlString;
httpresponser.defaultport = urlconnection.geturl (). getDefaultport ();
httpresponser.file = urlconnection.geturl (). getFile ();
httpresponser.host = urlconnection.geturl (). gethost ();
httpresponser.path = urlconnection.geturl (). getPath ();
httpresponser.port = urlconnection.geturl (). getPort ();
httpresponser.protocol = urlconnection.geturl (). getProtocol ();
httpresponser.query = urlConnection.getUrl (). getQuery ();
httpresponser.ref = urlconnection.geturl (). getref ();
httpresponser.userinfo = urlconnection.geturl (). getuserinfo ();
httpresponser.content = สตริงใหม่ (temp.toString (). getBytes (), ecoD);
httpresponser.contentencoding = ecoD;
httpresponser.code = urlConnection.getResponsecode ();
httpresponser.message = urlConnection.getResponsEmessage ();
httpresponser.contentType = urlConnection.getContentType ();
httpresponser.method = urlConnection.getRequestMethod ();
httpresponser.connecttimeout = urlConnection.getConnectTimeOut ();
httpresponser.readtimeout = urlConnection.getReadTimeOut ();
ส่งคืน httpresponser;
} catch (ioexception e) {
โยน e;
} ในที่สุด {
if (urlconnection! = null)
urlconnection.disconnect ();
-
-
-
* ชุดอักขระการตอบกลับเริ่มต้น
-
สตริงสาธารณะ getDefaultContentEncoding () {
ส่งคืนสิ่งนี้ defaultcontentencoding;
-
-
* ตั้งค่าอักขระการตอบกลับเริ่มต้น
-
โมฆะสาธารณะ setDefaultContentEncoding (สตริง defaultContentEncoding) {
this.defaultContentEncoding = defaultContentEncoding;
-
-
ประการที่สองลองมาดูวัตถุตอบสนอง (httprespons) วัตถุตอบสนองเป็นเพียงแค่ถั่วข้อมูลซึ่งห่อหุ้มข้อมูลผลลัพธ์ของการตอบกลับคำขอดังนี้:
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.vector;
-
* วัตถุตอบสนอง
-
ชั้นเรียนสาธารณะ httprespons {
สตริง urlstring;
int defaultport;
ไฟล์สตริง;
โฮสต์สตริง;
เส้นทางสตริง;
พอร์ต int;
โปรโตคอลสตริง;
คิวรีสตริง;
สตริงอ้างอิง;
String userInfo;
String ContentEncoding;
เนื้อหาสตริง;
String ContentType;
รหัส int;
ข้อความสตริง;
วิธีการสตริง;
Int ConnectTimeout;
int readtimeout;
เวกเตอร์ <String> contentCollection;
สตริงสาธารณะ getContent () {
ส่งคืนเนื้อหา;
-
สตริงสาธารณะ getContentType () {
ส่งคืน ContentType;
-
สาธารณะ int getCode () {
รหัสส่งคืน;
-
สตริงสาธารณะ getMessage () {
ส่งคืนข้อความ;
-
เวกเตอร์สาธารณะ <String> getContentCollection () {
ส่งคืน contentCollection;
-
สตริงสาธารณะ getContentEncoding () {
ส่งคืนเนื้อหาการเข้ารหัส;
-
สตริงสาธารณะ getMethod () {
วิธีการส่งคืน;
-
public int getConnectTimeout () {
ส่งคืน ConnectTimeOut;
-
สาธารณะ int getReadTimeOut () {
return readtimeout;
-
สตริงสาธารณะ getUrlString () {
กลับ urlstring;
-
สาธารณะ int getDefaultport () {
ส่งคืน defaultport;
-
สตริงสาธารณะ getFile () {
ส่งคืนไฟล์;
-
สตริงสาธารณะ gethost () {
โฮสต์กลับ;
-
สตริงสาธารณะ getPath () {
เส้นทางกลับ;
-
สาธารณะ int getport () {
พอร์ตกลับ;
-
สตริงสาธารณะ getProtocol () {
โปรโตคอลคืน;
-
Public String getQuery () {
แบบสอบถามกลับ;
-
สตริงสาธารณะ getref () {
ส่งคืนอ้างอิง;
-
สตริงสาธารณะ getUserInfo () {
ส่งคืน userinfo;
-
-
สุดท้ายเรามาเขียนคลาสแอปพลิเคชันเพื่อทดสอบว่ารหัสด้านบนถูกต้อง
การคัดลอกรหัสมีดังนี้:
นำเข้า com.yo.http.httprequester;
นำเข้า com.yo.http.httprespons;
การทดสอบระดับสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
พยายาม {
คำขอ httprequester = new httprequester ();
httprespons hr = request.sendget ("// www.vevb.com");
System.out.println (hr.geturlstring ());
System.out.println (hr.getProtocol ());
System.out.println (hr.getHost ());
System.out.println (hr.getport ());
System.out.println (hr.getContentencoding ());
System.out.println (hr.getMethod ());
System.out.println (hr.getContent ());
} catch (Exception e) {
E.PrintStackTrace ();
-
-
-