Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import java.net.URL;
- Bu sınıfı kullanmak URLConnection veya HttpURLConnection sınıfını kullanmaktan daha kolay.Bu sınıfın openConnection() metodu URLConnection nesnesi döner. Bu nesne HttpURLConnection olabilir.
- Bu sınıfı URI sınıfına çevirmek te mümkün
URL şu kısımlardan oluşur.
Şöyle yaparız.
Proxy nesnesini oluşturmak için şöyle yaparız.
Proxy ile çalışırken önce proxy adresine şu istek gönderilir.
openStream metodu
Bir InputStream döner. Eğer adres http ise GET isteği gönderir. Sunucu 404 gönderirse exception fırlatır.
Örnek
Şöyle yaparız.
XML'i okumak için şöyle yaparız.
Bellekteki bir değişkene okumak için Apache Commons IO kullanarak şöyle yaparız.
Satır satır okumak için şöyle yaparız.
URL şu kısımlardan oluşur.
scheme:[//host[:port]][/]path[?query][#fragment]
Bir URL'nin location kısmı büyük küçük harf farkından etkilenmez, ancak data kısmı etkilenebilir. scheme:[//host[:port]][/]path[?query][#fragment]
\____________________/\________________________/
Location Data
Biraz daha kolay anlaşılır bir gösterim şöyle foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
path alanından sonra gelen parametreler ? karakteri ile başlar. Şu url doğru olan
http://192.168.2.33:554?user=admin&password=&channel=2&stream=1.sdp
Ancak bir çok tarayıcı ? karakterinin önüne / karakterini ekliyor. Niçin bilmiyorum
http://192.168.2.33:554/?user=admin&password=&channel=2&stream=1.sdp
Örnek - Jar İçindeki File
Şöyledir. Burada scheme "jar:file:" şeklinde.
jar:file:/C:/foo.jar!/res/bar.htm
constructror - String
Şöyle yaparız.URL url = new URL("http://my.real.url.com/");
Bu metod exception atabilir.try {
URL url = new URL("https://...");
} catch (MalformedURLException e) {
...
}
getPath metoduŞöyle yaparız.
String url1 = new URL("http://1.1.1.1/dl/pi/1").getPath(); // returns /dl/pi/1
String url2 = new URL("https://www.example.org/dl/pi/1").getPath(); // returns /dl/pi/1
System.out.println(url1.equals(url2));
openConnection metodu - Proxy Proxy nesnesini oluşturmak için şöyle yaparız.
InetSocketAddress proxyLocation = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
Ya da şöyle yaparız.SocketAddress addr = new InetSocketAddress("my.proxy.com", 8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
URLConnection connection = url.openConnection(proxy);
Çoğu kod connection nesnesini cast ediyor.HttpURLConnection httpURLConnection =
(HttpURLConnection) url.openConnection(proxy);
Daha sonra proxy bilgisi doldurulur. Bu yöntem HTTP için çalışıyor.String encoded = new sun.misc.BASE64Encoder().
encodeBuffer((proxyUserName + ":" + proxyPassword).getBytes()).replace("\r\n","");
httpURLConnection.setRequestProperty("Proxy-Authorization", "Basic " + encoded);
HTTPS için proxy bilgisi şöyle doldurulur.// Works for HTTP and HTTPS, but sets a global default!
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(proxyUserName, proxyPassword.toCharArray());
}
});
En son olarak URLConnection sınıfının getInputStream metodu çağrılırsa adres http ise GET veya POST isteği yapılır.Proxy ile çalışırken önce proxy adresine şu istek gönderilir.
CONNECT stackoverflow.com:443 HTTP/1.0\r\nProxy isteği kabul ederse şöyle başlayan bir cevap verir.
Proxy-Authorization: Basic c2F5WW91SGF2ZVNlZW5UaGlzSW5UaGVDb21tZW50cw==\r\n
\r\n
HTTP/1.0 200Daha sonra gerçekten bağlanmak istediğimiz adresi veririz.
GET /questions/3304006/persistent-httpurlconnection-in-java HTTP/1.0\r\nProxy bizim adımıza bağlantı kurup cevabı gönderir.
Host: stackoverflow.com\r\n
\r\n
openStream metodu
Bir InputStream döner. Eğer adres http ise GET isteği gönderir. Sunucu 404 gönderirse exception fırlatır.
Örnek
Şöyle yaparız.
String url = "http://...";
try {
InputStream in = new java.net.URL(url).openStream();
...
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
ÖrnekXML'i okumak için şöyle yaparız.
URL url = new URL("http://www.rssmix.com/u/8171434/rss.xml");
Document doc = builder.parse(url.openStream());
ÖrnekBellekteki bir değişkene okumak için Apache Commons IO kullanarak şöyle yaparız.
final URL url = new URL("http://pat/to.tile");
final String content = IOUtils.toString(url.openStream(), "UTF-8");
ÖrnekSatır satır okumak için şöyle yaparız.
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
ArrayList <String> arr = new ArrayList<String>();
while ((inputLine = in.readLine()) != null)
{
arr.add(inputLine);
}
in.close();
toURI metoduŞöyle yaparız
URL url = ...;
URI uri = url.toURI();
Hiç yorum yok:
Yorum Gönder