☕ Java HttpURLConnection ile HTTP GET ve POST İstekleri Nasıl Yapılır?
🎯 Bu Rehberde Ne Öğreneceksiniz?
Bu rehberde, Java'nın HttpURLConnection sınıfını kullanarak HTTP GET ve POST istekleri oluşturmayı öğreneceksiniz.
İstek oluşturma, başlık ekleme ve yanıt okuma işlemlerini pratik örneklerle uygulayacağız.
🧠 Teknik Özet
Ana konu: Java java.net.HttpURLConnection sınıfı ile HTTP GET ve POST istekleri oluşturma.
Amacı: Java uygulamalarında harici API’lerle iletişim kurmak.
Adımlar:
- URL nesnesi oluşturulur.
- Bağlantı (
HttpURLConnection) açılır. - İstek metodu ve başlıklar ayarlanır.
- Yanıt kodu kontrol edilir.
- GET için InputStream, POST için OutputStream kullanılır.
- Sunucu yanıtı okunur ve yazdırılır.
⚙️ Gerekli Ön Koşullar
Bu örnekleri çalıştırmak için:
- Java 8+ veya üzeri kurulu olmalıdır.
- Test Sunucusu: Yerel bir Tomcat veya
https://test.rabisu.cloud:9090/APIbenzeri HTTP/HTTPS ortamı kullanılabilir.
🚀 HttpURLConnection Kullanım Adımları
Java’da bir HTTP isteği oluşturmak için şu adımları izleyin:
URL Nesnesi Oluşturun
URL url = new URL("https://test.rabisu.cloud:9090/API");
➡️ Hedef sunucunun adresini tanımlar.
Bağlantıyı Açın
HttpURLConnection con = (HttpURLConnection) url.openConnection();
➡️ HTTP bağlantısı oluşturur.
İstek Türünü Belirleyin
con.setRequestMethod("GET");
➡️ GET veya POST türü seçilir.
Başlık Ekleyin
con.setRequestProperty("User-Agent", "Mozilla/5.0");
➡️ İstek başlığı (header) eklenir.
Yanıt Kodunu Okuyun
int responseCode = con.getResponseCode();
➡️ 200 = Başarılı, diğer kodlar hata durumudur.
Yanıtı Okuyun (GET)
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
➡️ Sunucudan dönen veri akışını okur.
Veri Gönderin (POST)
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write("userName=RabisuGelis".getBytes());
os.close();
➡️ POST verisini sunucuya gönderir.
💻 Örnek Kod – GET ve POST
package com.rabisu.net;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class RabisuHttpConnection {
private static final String KULLANICI_AJANI = "Mozilla/5.0";
private static final String GET_URL = "https://test.rabisu.cloud:9090/API";
private static final String POST_URL = "https://test.rabisu.cloud:9090/API/login";
private static final String POST_PARAMETRELER = "kullaniciAdi=RabisuGelis";
public static void main(String[] args) throws IOException {
sendGET();
System.out.println("--- GET İsteği Tamamlandı ---");
sendPOST();
System.out.println("--- POST İsteği Tamamlandı ---");
}
private static void sendGET() throws IOException {
URL obj = new URL(GET_URL);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", KULLANICI_AJANI);
int responseCode = con.getResponseCode();
System.out.println("GET Yanıt Kodu :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) response.append(inputLine);
in.close();
System.out.println(response);
} else System.out.println("GET isteği başarısız.");
}
private static void sendPOST() throws IOException {
URL obj = new URL(POST_URL);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", KULLANICI_AJANI);
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(POST_PARAMETRELER.getBytes());
os.flush();
os.close();
int responseCode = con.getResponseCode();
System.out.println("POST Yanıt Kodu :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) response.append(inputLine);
in.close();
System.out.println(response);
} else System.out.println("POST isteği başarısız.");
}
}
🔒 HTTPS İstekleri (SSL/TLS)
Eğer HTTPS protokolü üzerinden iletişim kurulacaksa, HttpURLConnection yerine javax.net.ssl.HttpsURLConnection kullanılmalıdır. Bu sınıf, SSL/TLS el sıkışma işlemlerini otomatik olarak yönetir.
💬 Sıkça Sorulan Sorular (SSS)
- HttpURLConnection mi yoksa HttpClient mi daha iyi?
HttpURLConnection temel projeler için yeterlidir; HttpClient (Java 11+) modern, asenkron desteklidir.
- Zaman aşımı nasıl ayarlanır?
setConnectTimeout() ve setReadTimeout() metodlarını milisaniye cinsinden kullanabilirsiniz.
- JSON formatında veri gönderebilir miyim?
Evet, başlığa Content-Type: application/json ekleyin ve JSON stringini yazın.
- Yönlendirmeler (301/302) otomatik mi?
Evet, varsayılan olarak HttpURLConnection yönlendirmeleri takip eder.
- HTTPS için ekstra yapılandırma gerekir mi?
Hayır, HttpsURLConnection SSL işlemlerini otomatik olarak yürütür.
✅ Sonuç
Bu rehberde, Java’nın HttpURLConnection sınıfını kullanarak HTTP GET ve POST istekleri göndermeyi öğrendiniz. Bu bilgilerle Java uygulamalarınız, harici API’lerle güvenli şekilde veri alışverişi yapabilir.
🚀 Kendi projenizde bu kodu test edin — Rabisu Bulut platformunda Java uygulamanızı hemen deneyebilirsiniz! ☁️