14 Ekim 2017 Cumartesi

HttpURLConnection Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.net.HttpURLConnection;
Persitent connection kullanır. Açıklaması şöyle
By default, the HttpURLConnection is smart enough to reuse a connection to the same host if keep-alive is enabled by the host.
Bu sınıfın C#'taki karşılığı WebRequest sınıfıdır. Bu sınıfla ilgili en açıklayıcı örnekler burada. Bu sınıflar şu işleri yapabiliriz.
GET
GET + Sorgu Parametreleri
POST + Sorgu Parametreleri

constructor
Şöyle yaparız.
URL url = new URL("https://www.youtube.com/results");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
disconnect metodu
Şöyle yaparız.
con.disconnect(); 
getInputStream metodu
Örnek
Post isteğini cevabını okumak için önce stream'i elde ederiz. Şöyle yaparız.
InputStream in;
if(con.getResponseCode() == HttpURLConnection.HTTP_OK){
  in = connection.getInputStream();
} else {
  in = connection.getErrorStream();
}
if(null == in){
  return String.valueOf(connection.getResponseCode());
}
Eğer okunacak bir stream varsa şöyle yaparız.
BufferedReader reader = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
Cevabı StringBuilder'a toplamak için şöyle yaparız.
StringBuilder response = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
  String line;
  while (null != (line = reader.readLine())) {
    response.append(line);
    response.append("\r");
  }
}
getOutputStream metodu
Post isteğinde şöyle yaparız.
//Send request
try(DataOutputStream outputStream = new DataOutputStream(con.getOutputStream())){
  JsonObject jsonParam = new JsonObject();
  jsonParam.putString("loginName", "loginName");
  outputStream.writeBytes(jsonParam.toString());
  outputStream.flush();
}
getResponseCode metodu
Bazı kodlarda direk 200 ile karşılaştırma yapılıyor. Şöyle yaparız.
int status = con.getResponseCode();
if (status == 200) {...}
Ben tanımlı sabitleri kullanmayı tercih ediyorum.Şöyle yaparız.
if(con.getResponseCode() == HttpURLConnection.HTTP_OK){
  ...
}
setDoOutput metodu
Post işlemi ile nesnenin OutputStream'ine bir şey yazacaksak şöyle yaparız.
con.setDoOutput(true);
setFixedLengthStreamingMode metodu
Şöyle yaparız.
byte[] bytes = ...;
con.setFixedLengthStreamingMode(bytes.length);
setFollowRedirects metodu
Şöyle yaparız.
HttpURLConnection.setFollowRedirects(false);
setRequestMethod metodu
Şöyle yaparız.
con.setRequestMethod("POST");
setRequestProperty metodu
Örnek
Eğer GET isteği için kullanıyorsak ve parametre gönderiyorsak şöyle yaparız. Böylece sunucuya UTF-8 okuyabildiğimizi bildiririz. Sunucu da parametrelerin muhtemelen UTF-8 olduğunu düşünür.
URLConnection connection = new URL(url + "?" + query).openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");
Örnek
Şöyle yaparız.
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Örnek
Şöyle yaparız.
con.setRequestProperty("Content-Type",
                        "application/x-www-form-urlencoded;charset=UTF-8");
Örnek
Şöyle yaparız.
con.setRequestProperty("Content-Length",...);
setUseCaches metodu
Şöyle yaparız.
con.setUseCaches(false);


Hiç yorum yok:

Yorum Gönder