Giriş
Şu satırı dahil ederiz. Bu sınıf Java 1.1'den beri var. Yani kullanım tarzı olarak oldukça eski.
Şu satırı dahil ederiz. Bu sınıf Java 1.1'den beri var. Yani kullanım tarzı olarak oldukça eski.
Bu sınıfın kardeşi HttpsURLConnection sınıfı. Java 11 ile gelen HTTPClient daha iyi
import java.net.HttpURLConnection;
Persitent connection kullanır. Açıklaması şöyleBu 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ıfla şu işleri yapabiliriz.By default, the HttpURLConnection is smart enough to reuse a connection to the same host if keep-alive is enabled by the host.
GET
GET + Sorgu Parametreleri
POST + Sorgu Parametreleri
Kullanım
GET + Sorgu Parametreleri
POST + Sorgu Parametreleri
Kullanım
Örnek - GET
Şöyle yaparız. Burada sadece getInputStream tüketiliyor. HttpURLConnection.disconnect() ile kapatılıyor
String url = "https://api.github.com/users/google"; HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();con.setRequestMethod("GET");int status = con.getResponseCode();if (status == 200) {BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));...in.close();} con.disconnect();
Örnek - GET
Şöyle yaparız. Burada HttpURLConnection.disconnect ile kapatılıyor
URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", "Java HttpURLConnection"); try (BufferedReader reader = new BufferedReader( new InputStreamReader(connection.getInputStream()))) { StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } // Process the response content System.out.println(response.toString()); } connection.disconnect();
Örnek - GET
Şöyle yaparız. Burada gerekirse getInputStream, gerekirse getErrorStream tüketiliyor.
byte[] responseBody(HttpURLConnection conn) throws IOException { try (InputStream in = getStream(conn)) { if (in != null) { ByteArrayOutputStream out = new ByteArrayOutputStream(); in.transferTo(out); return out.toByteArray(); } } return EMPTY_BYTE_ARRAY; } InputStream getStream(HttpURLConnection conn) throws IOException { InputStream inputStream; int responseCode = conn.getResponseCode(); if (responseCode < HttpURLConnection.HTTP_BAD_REQUEST) { inputStream = conn.getInputStream(); } else { inputStream = conn.getErrorStream(); } return inputStream; }
Şöyle yaparız.
constructorString url = "https://httpbin.org/post";HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();con.setRequestMethod("POST");con.setRequestProperty("User-Agent", "Mozilla/5.0");con.setDoOutput(true);String data = "custname=google";OutputStream os = con.getOutputStream();os.write(data.getBytes());os.flush();os.close();int status = con.getResponseCode();if (status == HttpURLConnection.HTTP_OK) {BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));...in.close();}
Şöyle yaparız.
URL url = new URL("https://www.youtube.com/results");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
disconnect metoduŞöyle yaparız.
con.disconnect();
getErrorStream metoduÖrnek
Şöyle yaparız.
HttpURLConnection con = ...
...
int responseCode = con.getResponseCode();
InputStream inputStream;
if (200 <= responseCode && responseCode <= 299) {
inputStream = con.getInputStream();
} else {
inputStream = con.getErrorStream();
}
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 metoduPost 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Örnek
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 metoduPost 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