Skip to main content

☕ 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:

  1. URL nesnesi oluşturulur.
  2. Bağlantı (HttpURLConnection) açılır.
  3. İstek metodu ve başlıklar ayarlanır.
  4. Yanıt kodu kontrol edilir.
  5. GET için InputStream, POST için OutputStream kullanılır.
  6. 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/API benzeri 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)

  1. HttpURLConnection mi yoksa HttpClient mi daha iyi?

HttpURLConnection temel projeler için yeterlidir; HttpClient (Java 11+) modern, asenkron desteklidir.

  1. Zaman aşımı nasıl ayarlanır?

setConnectTimeout() ve setReadTimeout() metodlarını milisaniye cinsinden kullanabilirsiniz.

  1. JSON formatında veri gönderebilir miyim?

Evet, başlığa Content-Type: application/json ekleyin ve JSON stringini yazın.

  1. Yönlendirmeler (301/302) otomatik mi?

Evet, varsayılan olarak HttpURLConnection yönlendirmeleri takip eder.

  1. 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! ☁️