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编程入门相关推荐

  1. c#对象集合去重_《C#编程入门》概览

    # [前言] # 01.[C#简介](<C#编程入门>01-C#简介) # 02.[集成开发环境](<C#编程入门> 02-C#集成开发环境) # 03.[初识C# 控制台输入 ...

  2. 编程入门python语言是多大孩子学的-如何看待将Python作为少儿编程的基础语言?...

    少儿编程入门我只推荐Scratch!不好意思,Python先靠后! 今天的回答主要针对Scratch编程语言,看完我的回答你就知道为什么我会强推Scratch! 本回答较长,建议大家先点赞&收 ...

  3. python编程入门经典教程-python编程入门经典

    第七章主要是文件操作相关,这么看用python---便,是一个不错的工具. <Python编程入门经典>主要内容:介绍用于存储和操作数据的变量的概念:讨论用于读写数据的文件和输入/输出:总 ...

  4. 专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发

    张淞,Haskell语言爱好者,著有<Haskell函数式编程入门>一书.目前就职于网易杭州研究院.在10月15日~17日的QCon上海2015上,他将分享<Haskell中的函数与 ...

  5. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

  6. 【转载】PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持. 如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们 ...

  7. kdir测试软件,[OK210开发板体验]入门篇(4)编程入门(NFS登录、驱动入门)

    前面分别介绍了 [OK210开发板体验]的第一篇:开箱验板 [OK210开发板验]的第二篇:板载资源 [OK210开发板体验]的第三篇:开发环境(软件安装,开发环境,烧写系统) 今天是[OK210开发 ...

  8. Oracle编程入门经典 第12章 事务处理和并发控制

    目录 12.1          什么是事务处理... 1 12.2          事务处理控制语句... 1 12.2.1       COMMIT处理... 2 12.2.2       RO ...

  9. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

最新文章

  1. FineUI经典项目展示(1)生产在线管理系统
  2. 神器-unity插件-Odin
  3. 【Linux】一步一步学Linux——curl命令(193)
  4. 初步看,我要在公司赚取更多的工资,钱多活少离家近
  5. Oracle RAC 10.2.0.5升级到11.2.0.4遇到的问题
  6. 全网音乐解析_Android干货 | 手机端的音乐神器
  7. python中文视频教程-中谷教育python中文视频教程(python视频教程) 完整版
  8. LINUX下载编译libsndfile
  9. 数据导入时出现的问题:
  10. Python爬取行政区划代码(最新版)
  11. python字典攻击
  12. 袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
  13. 对称矩阵的特征值与特征向量
  14. 宝峰对讲机16频率表_宝峰对讲机频率设置 设置对讲机频率的技巧
  15. 有道智云翻译API + retrofit实现在线翻译Android app
  16. 边城性格悲剧_悲剧! 我的手表已延迟!
  17. signature=c2533d7d1f3a9e27480c43aef903d102,2 AUTHORS, INCLUDING: Uwe Helmke
  18. 计算机辅助绘图方式,计算机辅助绘图技巧
  19. weka使用训练集分类测试集_技术分享
  20. 华为路由器(可网管)连接光猫配置(光猫为路由模式)

热门文章

  1. boost::function_types::is_member_object_pointer的用法测试程序
  2. VTK:相互作用之ImageClip
  3. VTK:Filtering之ProgrammableSource
  4. OpenCV钻石Diamond 标记的检测
  5. C++选择排序(附完整源码)
  6. QT的QOpenGLFunctions类的使用
  7. BeyondCompare4如何破解
  8. 1、代码中设置编码、编辑器中设置Python的编码
  9. 5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬
  10. 笛卡尔集基本原理,等值连接,不等值连接,外连接,自连接