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

Метод http.Client.Post

Метод http.Client.Post отправляет HTTP POST запрос на указанный URL. В первый параметр мы передаем URL, на который будет отправлен запрос. Во второй параметр мы передаем тип содержимого (Content-Type) в виде строки. В третий параметр мы передаем тело запроса в виде интерфейса io.Reader, часто это bytes.Reader или strings.Reader. Метод возвращает указатель на http.Response и ошибку. После завершения работы с ответом его тело должно быть закрыто.

Синтаксис

http.Client.Post(url, contentType, body)

Пример

Давайте отправим POST запрос с JSON данными на тестовый сервер:

package main import ( "bytes" "fmt" "net/http" ) func main() { client := &http.Client{} url := "https://jsonplaceholder.typicode.com/posts" jsonData := []byte(`{"title": "foo", "body": "bar", "userId": 1}`) body := bytes.NewReader(jsonData) res, err := client.Post(url, "application/json", body) if err != nil { fmt.Println(err) return } defer res.Body.Close() fmt.Println(res.Status) }

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

"201 Created"

Пример

Давайте отправим POST запрос с данными формы:

package main import ( "fmt" "net/http" "net/url" "strings" ) func main() { client := &http.Client{} urlStr := "https://httpbin.org/post" formData := url.Values{} formData.Set("username", "john_doe") formData.Set("password", "secret123") body := strings.NewReader(formData.Encode()) res, err := client.Post(urlStr, "application/x-www-form-urlencoded", body) if err != nil { fmt.Println(err) return } defer res.Body.Close() fmt.Println(res.StatusCode) }

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

"200"

Пример

Давайте отправим POST запрос с XML данными:

package main import ( "bytes" "fmt" "io" "net/http" ) func main() { client := &http.Client{} url := "https://httpbin.org/post" xmlData := []byte(`<?xml version="1.0"?><user><name>Alice</name><age>30</age></user>`) body := bytes.NewReader(xmlData) res, err := client.Post(url, "application/xml", body) if err != nil { fmt.Println(err) return } defer res.Body.Close() responseBody, _ := io.ReadAll(res.Body) fmt.Println(string(responseBody)) }

Результат выполнения кода (сокращенно):

"{\"args\": {}, \"data\": \"<?xml version=\\\"1.0\\\"?><user><name>Alice</name><age>30</age></user>\", ...}"

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

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