22 Aralık 2016 Perşembe

URLConnection Sınıfı

Giriş
URLConnection sınıfı abstract bir sınıf. Genelde HttpURLConnection olarak kullanılıyor. GET, POST işlemlerini gerçekleştirebiliriz.

constructor
Şöyle yaparız.
URL url = new URL("http://...");
URLConnection urlc = url.openConnection();
addRequestProperty metodu
Şöyle yaparız.
urlc.addRequestProperty("Content-length", "500");
connect metodu
Bu metod alltaki socket bağlantısını açmaz. getInputStream, getContent(),getHeaderField() çağrılarından birisi gerçek bağlantıyı açar. Dolayısıyla bu metodu bence kullanmamak lazım. Şöyle yaparız.
urlc.connect();
disconnect metodu
Nesne ile işimiz bitince mutlaka çağrılmalıdır. Açıklaması şöyle.
Disconnect. Once the response body has been read, the HttpURLConnection should be closed by calling disconnect(). Disconnecting releases the resources held by a connection so they may be closed or reused.
Şöyle yaparız.
urlc.disconnect();
followRedirects metodu
Şöyle yaparız.
HttpURLConnection.setFollowRedirects(false);
getContentLength metodu
Şöyle yaparız.
urlc.getContentLength(); // -> calls getHeaderField("content-length")
getHeaderField metodu
Şöyle yaparız.
//get header by 'key'
String server = urlc.getHeaderField ("Server");
getHeaderFields metodu
Şöyle yaparız.
//get all headers
Map<String, List<String>> map = urlc.getHeaderFields ();
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
  System.out.println("Key : " + entry.getKey() +
                     " ,Value : " + entry.getValue());
}
getInputStream metodu
Okuma için kullanılır. Adres http ise GET veya POST isteği gönderir. Şöyle yaparız.
try (InputStream is = urlc.getInputStream()) {  ...
}
Bağlantı açıldıktan sonra URL şöyle indirilir.
ReadableByteChannel rbc = Channels.newChannel(urlc.getInputStream());
FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
getOutputStream metodu
POST işleminde gönderilecek veriyi yazmak için kullanılır. Şöyle yaparız.
OutputStream out = urlc.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.print(postData);
witer.close();
getResponseCode metodu
Şöyle yaparız.
if (urlc.getResponseCode () == HttpURLConnection.HTTP_OK);
Şöyle yaparız.
if (urlc.getResponseCode () == 200) {...}
setChunkedStreamMode metodu
Şöyle yaparız.
urlc.setChunkedStreamingMode (0);
setConnectTimeout metodu
Şöyle yaparız.
urlc.setConnectTimeout (5000);
setDoInput metodu
GET ve POST işleminde gönderilen cevabı okumak için şöyle yaparız.
urlc.setDoInput (true);
setDoOutput metodu
POST işleminde gönderilecek veriyi yazmak için kullanılır. Şöyle yaparız.
urlc.setDoOutput (true);
setReadTimeout metodu
Bir connection var ve read() üzerinde bloke olduk. Belirtilen süre içinde okunacak veri gelmezse SocketTimeoutException fırlatılır
Şöyle yaparız.
urlc.setReadTimeout (5_000);
setRequestMethod metodu
Şöyle yaparız.
urlc.setRequestMethod ("HEAD");
Şöyle yaparız.
urlc.setRequestMethod ("POST");
setRequestProperty metodu
Form göndermek için Şöyle yaparız.
urlc.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");
Json göndermek için şöyle yaparız.
urlc.setRequestProperty ("Content-Type", "application/json");
Eğer Json utf-8 ise şöyle yaparız.
urlc.setRequestProperty ("Content-Type", "application/json;charset=utf-8");
Ajax çağrısı yapmak için şöyle yaparız.
urlc.setRequestProperty ("X-Requested-With", "XMLHttpRequest");
Bağlantı kapanmasın diye şöyle yaparız.
urlc.setRequestProperty ("Connection", "Keep-Alive");
setUseCaches metodu
Şöyle yaparız.
urlc.setUseCaches (false);

Hiç yorum yok:

Yorum Gönder