使用Go语言发起HTTP POST请求需要借助net/http
包中的Post()
或PostForm()
方法。以下是一个简单的示例:
package main
import (
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
// 创建要提交的表单数据
data := url.Values{}
data.Set("name", "张三")
data.Set("age", "18")
// 构造POST请求
req, err := http.NewRequest("POST", "http://example.com/api", strings.NewReader(data.Encode()))
if err != nil {
fmt.Println("创建POST请求失败:", err)
return
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
// 发送POST请求
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("发送POST请求失败:", err)
return
}
defer resp.Body.Close()
// 处理响应
fmt.Printf("HTTP状态码:%d\n", resp.StatusCode)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应内容失败:", err)
return
}
fmt.Printf("响应内容:%s\n", body)
}
以上代码将会向http://example.com/api
发起一次POST请求,请求体中包含name
和age
两个参数的值。当然,你也可以使用PostForm()
方法来发送表单数据,不过需要将表单数据拼接为一个字符串。
另外在实际开发中,我们还需要考虑请求超时、代理设置、证书验证等问题。您可以参考net/http包的文档和示例来了解更多内容。