在Go语言中访问第三方接口通常涉及到HTTP请求的发送与接收。Go的标准库net/http提供了强大的工具来实现这一功能。下面是一些基本的步骤和示例,帮助你使用Go语言访问第三方接口。
使用http.Get发送GET请求
func main() {
response, err := http.Get("https://api.example.com/data")
if err != nil {
fmt.Println("Error:", err)
return
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
fmt.Println(string(body))
}
使用http.NewRequest发送POST请求
/* resp, err := http.Post(
"https://api.example.com/login",
"application/json",
strings.NewReader(requestBody),
) */
func main() {
url := "https://api.example.com/data"
method := "POST"
payload := strings.NewReader(`{"key":"value"}`)
client := &http.Client{}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
fmt.Println(string(body))
}
处理JSON响应
import (
"encoding/json"
)
type ResponseData struct {
Key string `json:"key"` // 根据实际返回的JSON结构定义字段和类型
}
func main() {
// 发送HTTP请求... (如上所示)
// ... 读取响应体到body变量 ... 确保body是[]byte类型。
var data ResponseData
err := json.Unmarshal(body, &data) // 解析JSON到结构体中。
if err != nil {
fmt.Println("Error parsing JSON:", err)
return
}
fmt.Println(data) // 输出结构体中的数据。
}