РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1005 of 1593 menu

Тип http.Client

Тип http.Client из пакета net/http представляет собой HTTP-клиент, который позволяет выполнять запросы к веб-серверам. В отличие от функций http.Get или http.Post, использование http.Client дает больше контроля над запросами: можно настроить таймауты, управлять куки, использовать собственный транспорт и переиспользовать один экземпляр для множества запросов. Поля структуры включают Timeout — ограничение времени выполнения запроса, Jar — хранилище для куки, и Transport — настройки сетевого уровня.

Синтаксис

client := &http.Client{ Timeout: 10 * time.Second, }

Пример

Создадим клиент с таймаутом 5 секунд и выполним GET-запрос к публичному API:

package main import ( "fmt" "net/http" "time" ) func main() { client := &http.Client{ Timeout: 5 * time.Second, } resp, err := client.Get("https://httpbin.org/get") if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Println("Status:", resp.Status) }

Результат выполнения кода:

"Status: 200 OK"

Пример

Используем клиент для отправки POST-запроса с данными формы:

package main import ( "fmt" "net/http" "net/url" "time" ) func main() { client := &http.Client{ Timeout: 10 * time.Second, } data := url.Values{ "key1": {"value1"}, "key2": {"value2"}, } resp, err := client.PostForm("https://httpbin.org/post", data) if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Println("Status:", resp.Status) }

Результат выполнения кода:

"Status: 200 OK"

Пример

Переиспользуем один клиент для нескольких запросов и настроим куки-хранилище:

package main import ( "fmt" "net/http" "net/http/cookiejar" "time" ) func main() { jar, _ := cookiejar.New(nil) client := &http.Client{ Timeout: 5 * time.Second, Jar: jar, } // Первый запрос — сохраняем куки resp1, _ := client.Get("https://httpbin.org/cookies/set?name=value") resp1.Body.Close() // Второй запрос — куки будут отправлены автоматически resp2, _ := client.Get("https://httpbin.org/cookies") defer resp2.Body.Close() fmt.Println("Status:", resp2.Status) }

Результат выполнения кода:

"Status: 200 OK"

Смотрите также

  • метод Client.Do,
    который выполняет произвольный запрос
  • метод Client.Get,
    который выполняет GET-запрос
  • метод Client.Post,
    который выполняет POST-запрос
  • тип Transport,
    который управляет сетевым уровнем клиента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить