go语言进行http请求和处理http响应
时间: 2024-06-08 11:05:30 浏览: 88
angular 用拦截器统一处理http请求和响应的方法
在Go语言中,可以使用标准库中的`net/http`包来进行HTTP请求和处理HTTP响应。
下面是一个简单的HTTP GET请求的示例代码:
```go
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("https://www.baidu.com")
if err != nil {
fmt.Println("http get error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("read body error:", err)
return
}
fmt.Println(string(body))
}
```
在上面的代码中,`http.Get`函数用于发送HTTP GET请求,并返回一个`*http.Response`类型的响应对象。通过`resp.Body`可以获取响应的正文内容,需要在使用完毕后记得关闭。
对于HTTP响应,可以通过`resp.StatusCode`获取状态码,通过`resp.Header`获取响应头,通过`ioutil.ReadAll(resp.Body)`读取响应正文内容。
下面是一个简单的HTTP POST请求的示例代码:
```go
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "http://httpbin.org/post"
data := []byte(`{"name": "John", "age": 30}`)
resp, err := http.Post(url, "application/json", bytes.NewReader(data))
if err != nil {
fmt.Println("http post error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("read body error:", err)
return
}
fmt.Println(string(body))
}
```
在上面的代码中,`http.Post`函数用于发送HTTP POST请求,并返回一个`*http.Response`类型的响应对象。需要注意的是,在发送POST请求时需要指定请求头`Content-Type`为`application/json`,并将请求正文通过`bytes.NewReader`转为`io.Reader`类型。
阅读全文