17 HTTP编程入门
http请求原理
http请求原理我就不多说了,网上一搜就能搜索到,下面我注意是记录下http模块的使用方法
http 模块
HTTP-server hello world
我们使用HandleFunc来把url与处理函数绑定在一块就可以处理http请求了。
// simehttp1
package mainimport ("fmt""net/http"
)func hello(w http.ResponseWriter, r *http.Request) {fmt.Println("handle hello")fmt.Fprintf(w, "hello")
}func main() {http.HandleFunc("/", hello) // 把url和处理这个url的方法绑定下err := http.ListenAndServe("0.0.0.0:80", nil) // 启动服务if err != nil {fmt.Println("http listen failed")}
}
HTTP-Client
我们使用http模块来发送一个GET方法的http请求,然后在打印下获取的结果
// httpClient
package mainimport ("fmt""io/ioutil""net/http"
)func main() {res, err := http.Get("http://www.baidu.com") // 使用GET方法请求数据if err != nil {fmt.Println("get err:,", err)return}data, err := ioutil.ReadAll(res.Body) // 读取获取的html bodyif err != nil {fmt.Println("get data err:", err)return}fmt.Println(string(data))}
HTTP-head
我们可以使用head方法来访问指定的网页
// httpHead
package mainimport ("fmt""net/http"
)var url = []string{"http://www.baidu.com","http://google.com",
}func main() {for _, v := range url {resp, err := http.Head(v) // head方法获取内容if err != nil {fmt.Printf("head %s failed,err:", v, err)continue}fmt.Printf("head succ,status:%v\n", resp.Status)}
}
显然我们访问谷歌的时候因为墙的原因导致访问不了,超时时间比较长,那么我们可以自己定义下超时时间,自己定义的话只需要设置Dial 的超时时间即可,我们设置为2秒
// httpHead
package mainimport ("fmt""net""net/http""time"
)var url = []string{"http://www.baidu.com","http://google.com",
}func main() {for _, v := range url {c := http.Client{ // 指定http的超时时间,基本上对这个Client结构体赋值。更多详情可以看源码Transport: &http.Transport{Dial: func(network, addr string) (net.Conn, error) {timeout := time.Second * 2 // 这里设置超时时间为2秒return net.DialTimeout(network, addr, timeout)},},}resp, err := c.Head(v)if err != nil {fmt.Printf("head %s failed,err:", v, err)continue}fmt.Printf("head succ,status:%v\n", resp.Status)}
}
17 HTTP编程入门相关推荐
- c#对象集合去重_《C#编程入门》概览
# [前言] # 01.[C#简介](<C#编程入门>01-C#简介) # 02.[集成开发环境](<C#编程入门> 02-C#集成开发环境) # 03.[初识C# 控制台输入 ...
- 编程入门python语言是多大孩子学的-如何看待将Python作为少儿编程的基础语言?...
少儿编程入门我只推荐Scratch!不好意思,Python先靠后! 今天的回答主要针对Scratch编程语言,看完我的回答你就知道为什么我会强推Scratch! 本回答较长,建议大家先点赞&收 ...
- python编程入门经典教程-python编程入门经典
第七章主要是文件操作相关,这么看用python---便,是一个不错的工具. <Python编程入门经典>主要内容:介绍用于存储和操作数据的变量的概念:讨论用于读写数据的文件和输入/输出:总 ...
- 专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
张淞,Haskell语言爱好者,著有<Haskell函数式编程入门>一书.目前就职于网易杭州研究院.在10月15日~17日的QCon上海2015上,他将分享<Haskell中的函数与 ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
为什么80%的码农都做不了架构师?>>> 本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...
- 【转载】PHP面向对象(OOP)编程入门教程
面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持. 如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们 ...
- kdir测试软件,[OK210开发板体验]入门篇(4)编程入门(NFS登录、驱动入门)
前面分别介绍了 [OK210开发板体验]的第一篇:开箱验板 [OK210开发板验]的第二篇:板载资源 [OK210开发板体验]的第三篇:开发环境(软件安装,开发环境,烧写系统) 今天是[OK210开发 ...
- Oracle编程入门经典 第12章 事务处理和并发控制
目录 12.1 什么是事务处理... 1 12.2 事务处理控制语句... 1 12.2.1 COMMIT处理... 2 12.2.2 RO ...
- Oracle编程入门经典 第11章 过程、函数和程序包
目录 11.1 优势和利益... 1 11.2 过程... 1 11.2.1 语法... 2 11.2.2 建立或者替换... 2 11.2 ...
最新文章
- FineUI经典项目展示(1)生产在线管理系统
- 神器-unity插件-Odin
- 【Linux】一步一步学Linux——curl命令(193)
- 初步看,我要在公司赚取更多的工资,钱多活少离家近
- Oracle RAC 10.2.0.5升级到11.2.0.4遇到的问题
- 全网音乐解析_Android干货 | 手机端的音乐神器
- python中文视频教程-中谷教育python中文视频教程(python视频教程) 完整版
- LINUX下载编译libsndfile
- 数据导入时出现的问题:
- Python爬取行政区划代码(最新版)
- python字典攻击
- 袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
- 对称矩阵的特征值与特征向量
- 宝峰对讲机16频率表_宝峰对讲机频率设置 设置对讲机频率的技巧
- 有道智云翻译API + retrofit实现在线翻译Android app
- 边城性格悲剧_悲剧! 我的手表已延迟!
- signature=c2533d7d1f3a9e27480c43aef903d102,2 AUTHORS, INCLUDING: Uwe Helmke
- 计算机辅助绘图方式,计算机辅助绘图技巧
- weka使用训练集分类测试集_技术分享
- 华为路由器(可网管)连接光猫配置(光猫为路由模式)
热门文章
- boost::function_types::is_member_object_pointer的用法测试程序
- VTK:相互作用之ImageClip
- VTK:Filtering之ProgrammableSource
- OpenCV钻石Diamond 标记的检测
- C++选择排序(附完整源码)
- QT的QOpenGLFunctions类的使用
- BeyondCompare4如何破解
- 1、代码中设置编码、编辑器中设置Python的编码
- 5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬
- 笛卡尔集基本原理,等值连接,不等值连接,外连接,自连接