Национална академия по разработка на софтуер



страница10/14
Дата25.07.2016
Размер2.68 Mb.
#6706
1   ...   6   7   8   9   10   11   12   13   14

1.7.Работа с URL ресурси


Java е език за програмиране от високо ниво, който още от самото си създаване е бил силно ориентиран към работа с Интернет. Извличането на ресурси от WWW с Java може да бъде изключително лесно, ако използваме класа java.net.URL, но преди да видим как става това, нека си изясним какво е това URL.

Какво е URL


Както при пощенските услуги, за доставяне на някаква поща е необходим адреса на получателя (държава, град, улица, номер и т.н.), така и в Интернет, в рамките на глобалната разпределена информационна система World Wide Web (WWW), за достъп до някакъв ресурс е необходим неговият адрес. Адресите на ресурси във WWW се наричат URL. URL е съкращение от Uniform Resource Locator – единен адрес на ресурс и има следния формат:

protocol://host[:port]/[resource]

Protocol е протоколът, по който е достъпен ресурсът. Може да бъде http, ftp, https и др.

Host е IP адресът или името на машината, от която е достъпен ресурсът, примерно www.nakov.com или 208.185.127.162.

Port е незадължително поле, което указва номера на порта на машината, зададена в полето host, примерно 80 или 8080. Ако номер на порт не е зададен, се използва портът по подразбиране за дадения протокол, например 80 за HTTP, 21 за FTP, 443 за HTTPS и т.н.

Resource е пълното име на искания ресурс, като се включва и пътя до него. Ако не е зададен, се използва подразбиращият се ресурс. Например ако URL-ът на ресурса, който искаме да извлечем, е http://www.nakov.com/about/CV-Svetlin-Nakov.html, протоколът е http, хостът е www.nakov.com, портът не е зададен и се подразбира че е стандартния за http – 80, а ресурсът е /about/CV-Svetlin-Nakov.html, като /about/ е пътят до ресурса, а CV-Svetlin-Nakov.html е името му. Пътят /about/ до ресурса се нарича още виртуална директория на Web-сървъра.

Как можем да извлечем в Java ресурс по даден URL


Всички ние всекидневно използваме URL адреси за достъп до различни сайтове докато си сърфираме из Интернет. Когато използваме стандартен Web-браузър, обикновено пишем в полето за адрес URL адреса на сайта, който искаме да посетим и натискаме бутона за извличане на зададения адрес.

Когато работим с Java нещата са подобни – отваряме URL връзка като създаваме обект от класа java.net.URL, задаваме адреса на ресурса, от който се интересуваме и го извличаме използвайки стандартен входен поток. Да илюстрираме това с един малък пример – програма, която извлича документа http://www.nakov.com/about/CV-Svetlin-Nakov.html и го отпечатва на стандартния изход:



RetrieveURLExample.java

import java.net.*;

import java.io.*;

public class RetrieveURLExample {

public static void main(String[] args) throws IOException {

URL url = new URL(



"http://www.nakov.com/about/CV-Svetlin-Nakov.html");

BufferedReader in = new BufferedReader(



new InputStreamReader(url.openStream()));

String line;



while ((line = in.readLine()) != null)

System.out.println(line);

in.close();

}

}



Кодът е съвсем кратък и ясен – създаваме обект от класа URL, като му подаваме адреса на ресурса, до който искаме да установим достъп, след което отваряме входен поток за четене на този ресурс с метода openStream() и от този поток прочитаме целия ресурс ред по ред. В случая разчитаме, че ресурсът е текстов документ и затова го четем с текстов поток. Ако трябваше да извлечем ресурс, който не е текстов, примерно картинка, трябваше да го четем с бинарен поток.

Писане в URL ресурс


Класът URL, заедно с класа URLConnection могат да се използват не само за четене на ресурси, но и за писане в ресурси. При писане в ресурс на сървъра, който предоставя този ресурс се изпраща записаната от нас информация, оформена съгласно протокола, по който е достъпен този ресурс. Ето един пример как може да се направи това:

AltaVistaSearch.java

import java.io.*;

import java.net.*;

public class AltaVistaSearch {

public static void main(String[] args)

throws Exception {

URL url = new URL("http://www.altavista.com/search");



// Send request

URLConnection connection = url.openConnection();

connection.setDoOutput(true);

PrintWriter out = new PrintWriter(

connection.getOutputStream());

String query =

URLEncoder.encode("Svetlin Nakov", "UTF-8");

out.println("q=" + query);

out.close();

// Retrieve response

BufferedReader in = new BufferedReader(



new InputStreamReader(

connection.getInputStream()));

String line;

while ((line = in.readLine()) != null)

System.out.println(line);

in.close();

}

}



В примера се осъществява достъп до търсачката AltaVista, като й се задава да търси фразата „Svetlin Nakov”. Понеже търсачката работи по протокол HTTP, е необходимо всичко, което й се изпраща, да се кодира съгласно HTTP стандарта, така че да бъде разпознато коректно от Web сървъра. За целта се използва класа URLEncoder, с който параметрите се кодират по стандарта за URL. След това се отваря изходен поток към ресурса, през който на заявката й се подават кодираните параметри и накрая се отваря входен поток за четене от ресурса за да се прочете резултатът от извършеното в AltaVista търсене. За писане в URL се използва обект от класа URLConnection, който се взима с метода openConnection().

Писането писане в URL ресурс, достъпен по протокол HTTP на практика означава да се изпрати HTTP POST заявка към дадения ресурс, като се дава възможност да се изпратят и параметри. В нашия пример на сървъра www.altavista.com му се задава HTTP POST заявка, която съдържа адреса на динамичния ресурс /search, на който се задава един единствен параметър с име q и стойност Svetlin Nakov, кодирана в UTF-8.





Национална академия по разработка на софтуер

Лекторите

» Светлин Наков е преподавател по съвременни софтуерни технологии в СУ “Св. Климент Охридски”.

Той е автор на десетки на­учни и технически публи­ка­ции и ня­колко книги, свър­­зани с раз­работката на соф­ту­ер, заради което е търсен лектор и консултант.

През 2004 г. получава наг­ра­дата "Джон Атанасов" от прези­дента на България Ге­орги Пър­ва­нов за приноса му към разви­тието на инфор­ма­ци­он­ните технологии и ин­формаци­он­ното общество.

» Мартин Кулов е изпълнителен директор във фирма “Код Атест”, където раз­работва проекти за пови­ша­ване качеството на соф­ту­ер­ните продукти в Бъл­гария чрез автоматизация на про­цесите и внедряване на сис­теми за управление на ка­чеството.

Мартин е опитен лектор и сертифициран от Майкрософт разработчик по програмите MCSD и MCSD.NET.



Академията

» Национална академия по раз­ра­ботка на софтуер (НАРС) е център за професионално обу­чение на соф­ту­ерни специалисти.

» НАРС провежда задълбочени кур­сове по разработка на софтуер и съв­ременни софтуерни тех­ноло­гии.

» Предлагани специалности:



.NET Enterprise Developer

Java Enterprise Developer

» Качествено обу­чение с много практически упраж­нения

» Завършвате само за 3 месеца.

» Гарантирана работа след ус­пеш­но завършване!

» Професионална сертификация!

» БЕЗПЛАТНО!

Учите безплатно, плащате като завършите и започнете работа.

Стипендии от софтуерни фирми.



http://academy.devbg.org

  1. Каталог: books -> inetjava
    books -> В обятията на шамбала
    books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
    books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
    books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
    books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
    books -> Книга 2 щастие и успех предисловие
    books -> Превръщане на числа от една бройна система в друга
    books -> Тантриското преобразяване


    Сподели с приятели:
1   ...   6   7   8   9   10   11   12   13   14




©obuch.info 2024
отнасят до администрацията

    Начална страница