HTTP客户端和服务端


参考博客

HTTP客户端就是浏览器,而服务端就是后台服务器

HTTP协议规定了浏览器和网站服务器之间通信的规则,HTML通过标签符号为页面增添元素,CSS就是为了形成不同的颜色样式来渲染页面,JS是一种在浏览器上执行的编程语言,定义了页面上的动作。

package main// http serverimport ("fmt""io/ioutil""net/http"
)// Request中包含了客户端请求的所有内容,Response则是返回给客户端的内容
func f1(w http.ResponseWriter, r *http.Request) {b, err := ioutil.ReadFile("./xx.html")if err != nil {w.Write([]byte("发生错误:" + fmt.Sprintf("%v", err)))}w.Write(b)
}func f2(w http.ResponseWriter, r *http.Request) {// 读取客户端发来的请求信息// 对于GET请求,参数都放在URL上,请求body里是没有数据的fmt.Println(r.URL)// 自动识别URL中的参数fmt.Println(r.URL.Query())queryParam := r.URL.Query()name := queryParam.Get("name")age := queryParam.Get("age")fmt.Println(name, age)fmt.Println(r.Method)fmt.Println(ioutil.ReadAll(r.Body))w.Write([]byte("ok"))
}func main() {// 访问这个路径就执行f1函数http.HandleFunc("/hello", f1)http.HandleFunc("/xxx", f2)http.ListenAndServe("127.0.0.1:9090", nil)
}
package mainimport ("fmt""io/ioutil""net/http""net/url"
)// http Clientfunc main() {// 直接通过地址请求数据// resp, err := http.Get("http://127.0.0.1:9090/xxx?name=kaka&age=18")// if err != nil {//   fmt.Printf("get url failed,err:%v\n", err)//  return// }// 通过编码转义,多用于将中文编码,自定义其中的参数然后来发起请求data := url.Values{} //本质还是mapurlObj, _ := url.Parse("http://127.0.0.1:9090/xxx")data.Set("name", "卡卡")data.Set("age", "18")queryStr := data.Encode() //URL Encode之后的URLurlObj.RawQuery = queryStrfmt.Println(queryStr)// 建立请求req, _ := http.NewRequest("GET", urlObj.String(), nil)// 执行请求并获得回复resp, err := http.DefaultClient.Do(req)if err != nil {fmt.Printf("get url failed,err:%v\n", err)return}// 等价于下方代码// resp, err := http.Get(urlObj.String())// if err != nil {//     fmt.Printf("get url failed,err:%v\n", err)// }// response一定要记得关闭// 当请求并不是很频繁时,希望用完就关闭链接,可以建立短连接减少资源消耗// tr := &http.Transport{//   DisableKeepAlives: true,// }// client := http.Client{//    Transport: tr,// }// resp, err := client.Do(req)// if err != nil {//  fmt.Printf("get url failed,err:%v\n", err)//  return// }defer resp.Body.Close()// 从resp中将服务端返回的body数据读出来b, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Printf("read resp.Body failed,err:%v\n", err)return}fmt.Println(string(b))
}

【Go语言学习】——HTTP客户端和服务端相关推荐

  1. webService学习4:客户端调用服务端的代码

    1 服务器端sayHello变化了一点,代码如下 @WebService public class HelloWSImpl implements HelloWS {public String sayH ...

  2. 客户端和服务端简单开发

    今天是第一次写博客,因为最近在学习Java编程,以前没有接触过,学起来也比较困难,在网上看到有大佬说写博客是一种很好的提升自己的方式,所以我也打算把学习到的知道,发布到博客上,方便查阅. 今天学习了客 ...

  3. swagger生成对应的客户端、服务端代码

    根据yaml文件生成对应的客户端.服务端代码 前言 ​ 对于早期的webservice接口,我们可以根据wsdl文件生成对应的客户端和服务端代码.那么同样的针对于Restful风格的接口,也有同样的根 ...

  4. Netty学习笔记(二) 实现服务端和客户端

    在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...

  5. Esp8266学习之旅⑧ 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。(带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  6. 【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信

    文章目录 socket介绍 java中使用socket 基于tcp的socket通信 使用ServerSocket类创建一个web服务器:(java) windows下的基于tcp的socket编程( ...

  7. mysql服务器是否支持tcp/ip连接,(3)MySQL客户端与服务端的TCP/IP及socket连接方式-Go语言中文社区...

    MySQL客户端与服务端的TCP/IP及socket连接方式 客户端与服务器模型 客户端与服务端模型 TCP/IP方式连接 解释说明 TCP/IP套接字方式是MySQL在任何平台下都提供的连接方式,也 ...

  8. 客户端渲染 服务端渲染_这就是赢得客户端渲染的原因

    客户端渲染 服务端渲染 A decade ago, nearly everyone was rendering their web applications on the server using t ...

  9. 客户端和服务端的关系

    客户端和服务端的关系 很多人在学习编程的时候并不知道客户端和服务端的关系,今天就让我给你用一个打比方的方法为你解说一下客户端和服务端之间的秘密. 我在大学喜欢去清蒸餐厅吃饭,因为比较近,那我进来之后找 ...

最新文章

  1. LeetCode Reorder List
  2. excel表格最大行数
  3. DisplayMetrics
  4. 程序员面试金典 - 面试题 02.05. 链表求和
  5. 手机壁纸 NBA群星高清壁纸
  6. UI基本设计素材模板|完整的线框图
  7. Linux基础命令---查找进程id
  8. 补充“为什么Scrum不行”
  9. poj 1502 单源最短路径
  10. layUI table 按条件搜索 结果整个页面刷新
  11. wildfly access log 开启
  12. 大数据技术将是传统企业创新的原点
  13. 虚拟机文件系统混乱,导致编译失败
  14. at89c51编程语言,(最新整理)AT89C51单片机简介
  15. 浏览器 播放音频(IE,谷歌)
  16. 每天记忆五个词根之五
  17. 乐动手环app下载安装_乐动健康手环app下载-乐动健康 安卓版v2.34-pc6智能硬件网...
  18. 最小的操作系统MenuetOS
  19. 【博客排版】中文文案排版指北(转载)
  20. VC++ 动态检测串口的热插拔(一)通过遍历实现

热门文章

  1. 七牛云平台更换到期加速域名证书
  2. Gradle子模块之间的依赖
  3. win10 怎么清除电脑所有数据
  4. 【技术总结】Python常见技巧
  5. 神经网络主要由哪些层构成,神经网络拓扑结构图
  6. 使用IDEA调试Arthas
  7. Tesla数据标注系统解析
  8. 用C语言比较10个数字的大小
  9. visual C+ 6.0的使用安装
  10. 整点报时程序,实用性强,适用WIN7及以上系统