yöntemler newBuilder(), build()

HttpRequest sınıfı, adından da anlaşılması kolay olan bir http isteğini tanımlamak için kullanılır. Bu nesne kendi başına hiçbir şey yapmaz, sadece http isteği hakkında çeşitli bilgiler içerir. Bu nedenle, muhtemelen zaten tahmin ettiğiniz gibi, onu oluşturmak için Oluşturucu şablonu da kullanılır.

HttpRequest request = HttpRequest.newBuilder()
	.method1()
	.method2()
	.methodN()
    .build();

newBuilder() ve build() yöntemlerine yapılan çağrılar arasında, bir nesne oluşturmak için tüm yöntemleri çağırmanız gerekir.Http İsteği.

Basit bir istek örneği şuna benzer:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(“http://codegym.cc”))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

HttpRequest sınıfının tüm yöntemlerini resmi belgelerdeki bağlantıda bulabilirsiniz .

Ve sonra en popülerlerini analiz edeceğiz.

uri() yöntemi

uri() yöntemini kullanarak , http isteğinin gönderileceği URI'yi (veya URL'yi) ayarlayabilirsiniz. Örnek:

HttpRequest request = HttpRequest.newBuilder()
    .uri( URI.create(“http://codegym.cc”) )
    .build();

Bu arada, URI'yi doğrudan newBuilder() yöntemine geçirerek bu kodu biraz daha kısaltabilirsiniz :

HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();

Önemli! Bir URI iki şekilde oluşturulabilir:

  • yeniURI(Dize)
  • URI.create(Dize)

İkinci yol tercih edilir. İlk yol maalesef çok iyi değil çünkü URI yapıcısı genel URI(String str) olarak bildirildiğinden URISyntaxException fırlatır ve URISyntaxException kontrol edilen bir istisnadır.

Yöntemler GET(), POST(), PUT(), DELETE()

Aşağıdaki yöntemleri kullanarak http istek yöntemini ayarlayabilirsiniz:

  • ELDE ETMEK()
  • POSTALAMAK()
  • KOYMAK()
  • SİLMEK()

Basit bir GET isteği şu şekilde görünür:

HttpRequest request = HttpRequest.newBuilder()
  .uri(new URI("https://codegym.cc"))
  .GET()
  .build();

sürüm () yöntemi

HTTP protokolü sürümünü de ayarlayabilirsiniz. Sadece 2 seçenek var:

  • HttpClient.Version.HTTP_1_1
  • HttpClient.Version.HTTP_2

Diyelim ki HTTP/2 protokolünü kullanarak bir istek oluşturmak istiyorsunuz, ardından şunu yazmanız gerekecek:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

Çok basit, değil mi? :)

zaman aşımı() yöntemi

Sorgu yürütme süresini de ayarlayabilirsiniz. Geçerse ve istek hiçbir zaman tamamlanmazsa, bir HttpTimeoutException atılır .

Zamanın kendisi nesne kullanılarak ayarlanırsüreJava DateTime API'sinden. Örnek:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

Bu yöntemin varlığı, HttpClient ve HttpRequest sınıflarının çeşitli görevleri gerçekleştirebileceğini göstermektedir. Bir isteği yürüttüğünüzü ve ağa bir şey olduğunu ve bunun 30 saniye sürdüğünü hayal edin. Hemen bir istisna almak ve buna doğru şekilde tepki vermek çok daha faydalıdır.

başlık () yöntemi

Ayrıca herhangi bir isteğe istediğiniz sayıda başlık ekleyebilirsiniz. Ve bunu yapmak her şey kadar kolaydır. Bunun için özel bir yöntem var - header() . Örnek:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .header("name1", "value1")
   .header("name2", "value2")
   .GET()
   .build();

Aynı anda birçok başlığı ayarlamanın başka bir alternatif yolu daha var. Örneğin, bir başlık listesini bir diziye dönüştürdüyseniz kullanışlı olabilir:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("name1", "value1", "name2", "value2")
   .GET()
   .build();

Temel olan her şey basittir.