Метод http.Client.PostForm
Метод http.Client.PostForm отправляет HTTP POST-запрос с данными формы (application/x-www-form-urlencoded) на указанный URL. Первым параметром метод принимает строку с URL-адресом, вторым параметром - значения формы в виде url.Values. Метод возвращает указатель на http.Response и ошибку. После получения ответа тело ответа необходимо закрыть.
Синтаксис
client.PostForm(url, data)
Пример
Давайте отправим POST-запрос с данными формы на сервер:
package 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)
}
Результат выполнения кода:
"Status: 200 OK"
Пример
Давайте отправим несколько полей формы с различными значениями:
package 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)
}
Результат выполнения кода:
"Status: 200 OK"
Пример
Давайте используем http.DefaultClient для отправки формы и проверим полученные данные:
package 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))
}
Результат выполнения кода:
"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,
которая кодирует данные формы в строку запроса