2021-06-13
来源:华纳网
责任编辑:王双双
人气:
核心提示:【谷雨课堂】Go实战 No.014 Go干货!连接网络获取网页内容
知识点:
获取网页内容 内容:
大家好,欢迎来到谷雨课堂!
本节,
我们讲一下如何用Go来获取其它网站上的内容,
这个功能非常重要,
我们在与其它系统进行对接的时候,
就需要访问其它系统的各种接口,
而HTTP接口则是最普遍一种,
关于HTTP,可以在谷雨课堂以往的视频找到,
主要分为GET,POST请求,
而JSON则是数据传输过程中应用最广的一种,
那么这节课我们就抛砖引玉,
讲讲如何访问其它系统,
我们用到的库都是Go语言自带的库,
本节使用的GET请求,
其它的请求功能类似,
有一定动手能力的同学们相信很快就能实现
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
//获取网页内容,使用GET方式
func fetch(url string) string {
fmt.Println("Fetch Url", url)
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("User-Agent", "Mozilla/5.0")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Http get err:", err)
return ""
}
if resp.StatusCode != 200 {
fmt.Println("Http status code:", resp.StatusCode)
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Read error", err)
return ""
}
return string(body)
}
func main() {
s := fetch("http://www.worldwarner.com")
fmt.Println(s)
}
延伸阅读:
什么是 HTTP ?
超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。
HTTP 的工作方式是客户端与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据。
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求(有些服务器可能会有最大长度限制)
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
获取网页内容 内容:
大家好,欢迎来到谷雨课堂!
本节,
我们讲一下如何用Go来获取其它网站上的内容,
这个功能非常重要,
我们在与其它系统进行对接的时候,
就需要访问其它系统的各种接口,
而HTTP接口则是最普遍一种,
关于HTTP,可以在谷雨课堂以往的视频找到,
主要分为GET,POST请求,
而JSON则是数据传输过程中应用最广的一种,
那么这节课我们就抛砖引玉,
讲讲如何访问其它系统,
我们用到的库都是Go语言自带的库,
本节使用的GET请求,
其它的请求功能类似,
有一定动手能力的同学们相信很快就能实现
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
//获取网页内容,使用GET方式
func fetch(url string) string {
fmt.Println("Fetch Url", url)
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("User-Agent", "Mozilla/5.0")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Http get err:", err)
return ""
}
if resp.StatusCode != 200 {
fmt.Println("Http status code:", resp.StatusCode)
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Read error", err)
return ""
}
return string(body)
}
func main() {
s := fetch("http://www.worldwarner.com")
fmt.Println(s)
}
延伸阅读:
什么是 HTTP ?
超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。
HTTP 的工作方式是客户端与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据。
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求(有些服务器可能会有最大长度限制)
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。