English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
URL (Uniform Resource Locator) يُدعى أيضًا اسمًا شائعًا هو مكان الموارد الموحدة، ويُمثل موارد الإنترنت مثل صفحات الويب أو عناوين FTP.
في هذا الفصل سنقدم كيفية معالجة Java لـ URL. يمكن تقسيم URL إلى عدة أجزاء.
protocol://host:port/path?query#fragment
protocol(بروتوكول) يمكن أن يكون HTTP، HTTPS، FTP و File، وport هو رقم الميناء، وpath هو مسار الملف واسم الملف.
مثال على URL لبروتوكول HTTP:
http://ar.oldtoolbag.com/index.html?language=cn#j2se
تحليل URL:
البروتوكول (protocol):http
المضيف (host:port):ar.oldtoolbag.com
رقم الميناء (port): 80، لم يتم تحديد رقم الميناء في مثال URL هذا لأن رقم الميناء الافتراضي للبروتوكول HTTP هو 80.
مسار الملف (path):/index.html
معامل الطلب (query):language=cn
تحديد الموقع (fragment):j2se، تحديد موقع عنصر HTML الذي يحتوي على خاصية id هي j2se.
تم تعريف كلاس URL في حزمة java.net، ويستخدم هذا الكلاس لمعالجة محتويات URL. سنتحدث أدناه عن إنشاء وتشغيل URL.
java.net.URL يقدم طرق بناء URL غنية، ويمكن الحصول على الموارد من خلال java.net.URL.
الرقم | وصف الطريقة |
---|---|
1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException. باستخدام المعلمات المقدمة (بروتوكول، اسم المضيف، رقم الميناء، اسم الملف) إنشاء URL. |
2 | public URL(String protocol, String host, String file) throws MalformedURLException باستخدام البروتوكول المحدد، اسم المضيف، اسم الملف إنشاء URL، استخدام رقم الميناء الافتراضي للبروتوكول. |
3 | public URL(String url) throws MalformedURLException باستخدام 字符串 URL المقدمة إنشاء URL |
4 | public URL(URL context, String url) throws MalformedURLException استخدام عنوان الأساس وURL المعياري |
يحتوي كلاس URL على العديد من الطرق لاستكشاف أجزاء URL المختلفة، وطرقها المحددة ووصفها كالتالي:
الرقم | وصف الطريقة |
---|---|
1 | public String getPath() ترجيع جزء المسار URL. |
2 | public String getQuery() ترجيع جزء البحث URL. |
3 | public String getAuthority() الحصول على جزء السلطة هذا URL. |
4 | public int getPort() ترجيع جزء منفذ URL |
5 | public int getDefaultPort() ترجيع端ر بروتوكول الافتراضي. |
6 | public String getProtocol() ترجيع بروتوكول URL |
7 | public String getHost() ترجيع اسم الخادم URL |
8 | public String getFile() ترجيع جزء اسم الملف URL |
9 | public String getRef() الحصول على جزء الحلزون هذا URL (يُطلق عليه أيضًا "الإشارة"). |
10 | public URLConnection openConnection() throws IOException فتح اتصال URL، وأنشئ عميل للوصول إلى الموارد. |
عينات أعطيت أعلاه توضح كيفية استخدام كلاس URL في java.net للحصول على أجزاء URL المختلفة:
import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://ar.oldtoolbag.com/index.html?language=cn#j2se"); System.out.println("URL هو: " + url.toString()); System.out.println("البروتوكول هو: " + url.getProtocol()); System.out.println("معلومات التحقق: " + url.getAuthority()); System.out.println("اسم الملف ومعلومات الطلب: " + url.getFile()); System.out.println("اسم الخادم: " + url.getHost()); System.out.println("الطريق: " + url.getPath()); System.out.println("المنفذ: " + url.getPort()); System.out.println("المنفذ الافتراضي: " + url.getDefaultPort()); System.out.println("الإعداد المطلوب: " + url.getQuery()); System.out.println("الموقع: " + url.getRef()); catch(IOException e) { e.printStackTrace(); } } }
نتيجة التجميع والتنفيذ للنموذج أعلاه كالتالي:
URL: http://ar.oldtoolbag.com/index.html?language=cn#j2se البروتوكول: http المعلومات الم��ة: ar.oldtoolbag.com اسم الملف والإعداد المطلوب: /index.html?language=cn اسم المضيف: ar.oldtoolbag.com المسار: /index.html المنفذ: -1 المنفذ الافتراضي: 80 الإعداد المطلوب: language=cn الموقع: j2se
يرجع openConnection() إلى java.net.URLConnection.
على سبيل المثال:
إذا كان URL متوافقًا مع بروتوكول HTTP، فإن طريقة openConnection() سترجع جسم HttpURLConnection.
إذا كان URL المتصل به ملف JAR، فإن طريقة openConnection() سترجع جسم JarURLConnection.
وشيء من هذا القبيل...
قائمة طرقURLConnection كالتالي:
الرقم | وصف الطريقة |
---|---|
1 | Object getContent() البحث عن محتوى رابط URL |
2 | Object getContent(Class[] classes) البحث عن محتوى رابط URL |
3 | String getContentEncoding() الرجوع إلى قيمة حقل content-encoding في الرأس. |
4 | int getContentLength() الرجوع إلى قيمة حقل content-length في الرأس. |
5 | String getContentType() الرجوع إلى قيمة حقل content-type في الرأس. |
6 | int getLastModified() الرجوع إلى قيمة حقل last-modified في الرأس. |
7 | long getExpiration() 返回头部 expires 字段值。 |
8 | long getIfModifiedSince() 返回对象的 ifModifiedSince 字段值。 |
9 | public void setDoInput(boolean input) URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。 |
10 | public void setDoOutput(boolean output) URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。 |
11 | public InputStream getInputStream() throws IOException 返回URL的输入流,用于读取资源 |
12 | public OutputStream getOutputStream() throws IOException 返回URL的输出流, 用于写入资源。 |
13 | public URL getURL() 返回 URLConnection 对象连接的URL |
以下示例中URL采用了HTTP 协议。openConnection 返回HttpURLConnection对象。
import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://ar.oldtoolbag.com"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("الرجاء إدخال عنوان URL"); return; } BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String urlString = ""; String current; while((current = in.readLine()) != null) { urlString += current; } System.out.println(urlString); catch(IOException e) { e.printStackTrace(); } } }
نتائج التجميع والتنفيذ للمثال أعلاه كالتالي:
$ javac URLConnDemo.java $ java URLConnDemo .....سيتم عرض محتوى صفحة بداية موقع الويب الأساسي (http://ar.oldtoolbag.com)......