📌  相关文章
📜  如何在 golang 中发送应用程序 x-www-form-urlencoded 请求 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:24:10.685000             🧑  作者: Mango

如何在 Golang 中发送应用程序 x-www-form-urlencoded 请求

在 Golang 中发送应用程序 x-www-form-urlencoded 请求,可以通过 net/http 包提供的 PostForm 方法进行实现。

方法一:使用 http.PostForm()
package main

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

func main() {
    form := url.Values{}
    form.Add("key1", "value1")
    form.Add("key2", "value2")

    req, _ := http.NewRequest("POST", "http://example.com/api", bytes.NewBufferString(form.Encode()))
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

这个方法中,我们首先创建了一个 url.Values 对象,用于存储请求参数。然后,我们创建了一个 http.Request 对象,并指定了请求方法、URL 和请求体。在请求体中,我们将 url.Values 对象通过 Encode() 方法编码成一个字符串,并传递给 bytes.NewBufferString() 方法创建一个 bytes.Buffer 对象,作为请求体。我们还设置了请求头的 Content-Typeapplication/x-www-form-urlencoded

接下来,我们使用 http.Client 对象的 Do() 方法发送请求,并获取响应。如果发生错误,我们使用 panic() 抛出异常。最后,我们使用 ioutil 包的 ReadAll() 方法读取响应体,将其转换成字符串并打印。

方法二:使用 http.Post()
package main

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

func main() {
    form := url.Values{}
    form.Add("key1", "value1")
    form.Add("key2", "value2")

    resp, err := http.PostForm("http://example.com/api", form)
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

这个方法中,我们使用 http.PostForm() 方法发送请求,该方法会自动处理请求体的编码和请求头的设置。我们只需要传递请求 URL 和 url.Values 对象即可。如果发生错误,我们使用 panic() 抛出异常。最后,我们使用 ioutil 包的 ReadAll() 方法读取响应体,将其转换成字符串并打印。