Метод http.Client.PostForm

Метод http.Client.PostForm отправляет HTTP POST-запрос с данными формы (application/x-www-form-urlencoded) на указанный URL. Первым параметром метод принимает строку с URL-адресом, вторым параметром - значения формы в виде url.Values. Метод возвращает указатель на http.Response и ошибку. После получения ответа тело ответа необходимо закрыть.

Синтаксис

goclient.PostForm(url, data)

Пример

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

gopackage main

import (
  "fmt"
  "net/http"
  "net/url"
  "strings"
)

func main() {
  client := &http.Client{}
  data := url.Values{}
  data.Set("username", "john_doe")
  data.Set("email", "john@example.com")

  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)
}

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

go"Status: 200 OK"

Пример

Давайте отправим несколько полей формы с различными значениями:

gopackage main

import (
  "fmt"
  "net/http"
  "net/url"
)

func main() {
  client := &http.Client{}
  data := url.Values{
    "name":  {"Alice"},
    "age":   {"30"},
    "city":  {"New York"},
    "hobbies": {"reading", "swimming", "coding"},
  }

  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)
}

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

go"Status: 200 OK"

Пример

Давайте используем http.DefaultClient для отправки формы и проверим полученные данные:

gopackage main

import (
  "fmt"
  "io"
  "net/http"
  "net/url"
)

func main() {
  data := url.Values{}
  data.Set("product", "laptop")
  data.Set("quantity", "2")
  data.Set("price", "999.99")

  resp, err := http.DefaultClient.PostForm("https://httpbin.org/post", data)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  defer resp.Body.Close()

  body, _ := io.ReadAll(resp.Body)
  fmt.Println("Response:", string(body))
}

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

go"Response: {\n  \"form\": {\n  \"price\": \"999.99\",\n  \"product\": \"laptop\",\n  \"quantity\": \"2\"\n  }\n}"

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

  • метод http.Client.Get,
    который выполняет GET-запрос к серверу
  • метод http.Client.Post,
    который отправляет POST-запрос с указанным типом содержимого
  • метод http.Client.Do,
    который выполняет произвольный HTTP-запрос
  • функцию url.Values.Encode,
    которая кодирует данные формы в строку запроса