下面是我依据网上资料的实操过程,记录以作备忘。该示例给出了https通信并处理json文件的例子。

平台:Ubuntu 16.04.3 LTS

go版本:1.10

1.生成自签名的服务器端的私钥KEY和公钥证书

openssl genrsa -out server.key 2048

openssl req -new -x509 -key server.key -out server.crt -days 3650

2.编写https通信的服务器和客户端程序
server.go

package mainimport ("encoding/json""fmt""net/http"
)type MyData struct {Name  string  `json:"item"`Other float32 `json:"amount"`
}//仅是构造一个json数据并发送给客户端
func handler(w http.ResponseWriter, r *http.Request) {var detail MyDatadetail.Name = "1"detail.Other = 2body, err := json.Marshal(detail)if err != nil {panic(err.Error())}fmt.Fprintf(w, string(body))
}func main() {http.HandleFunc("/", handler)fmt.Println("http server listen at 8086")http.ListenAndServeTLS(":8086", "server.crt", "server.key", nil)
}

client.go

package mainimport ("crypto/tls""encoding/json""fmt""github.com/bitly/go-simplejson""io/ioutil""net/http"
)type MyData struct {Name  string  `json:"item"`Other float32 `json:"amount"`
}func main() {tr := &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true},}client := &http.Client{Transport: tr}resp, err := client.Get("https://localhost:8086")if err != nil {fmt.Println("error:", err)return}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)fmt.Println(string(body))//decode jsonjs, err := simplejson.NewJson(body)if err != nil {panic(err.Error())}fmt.Printf("%T:%v\n", js, js)var res MyDataerr = json.Unmarshal([]byte(body), &res)fmt.Println(res)fmt.Println(res.Name, res.Other)
}

3.安装client.go中需要的依赖库go-simplejson
go get -v -u -t github.com/bitly/go-simplejson

4.编译生成服务器和客户端程序
go build server.go
go build client.go

5.运行并看到结果
打开两个终端,分别运行server和client程序

./server

./client

参考文献
[1].https://www.cnblogs.com/woodzcl/p/7569668.html

在Ubuntu 16.04.3 LTS上运行go+https+json示例相关推荐

  1. 在Ubuntu 16.04.3 LTS上运行go install出错的问题

    1.我在.go文件的当前目录下面运行go install出现下面的错误: go install hello.go go install: no install location for .go fil ...

  2. 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录

    缘由 我想安装一个python模块you-get,发现只能使用pip3安装,但是我发现我的Ubuntu 16.04.6 LTS上有python3.5,但是没有pip3,也无法成功安装,真是要了我的老命 ...

  3. 在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' 出错问题的解决方法

    在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' returned non-zero exit status ...

  4. 在Ubuntu 16.04.6 LTS上升级Go到最新版1.12.5实录

    上一次我在Ubuntu 16.04.3 LTS上从源码安装了Go,当时最新的版本是1.10,参见我之前的博文 https://blog.csdn.net/tao_627/article/details ...

  5. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操

    在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小. 在Ubuntu 16.0 ...

  6. 在Ubuntu 16.04.5 LTS上升级python的pip版本实录

    在ubuntu 16.04.5 LTS上使用Python安装模块时,比较顺手的方法是使用pip命令.这次,我在安装一个模块时,老是提示下面的问题,比较不爽.所以,我就照着提示做了一遍,记录下来,以作备 ...

  7. 在Ubuntu 16.04.3 LTS上玩转quic-go项目

    说明 quic-go是使用Go来重写chromium中的QUIC协议,将来计划过渡到IETF版本的QUIC协议. 目前该协议还处于不断更新和活跃之中,目前IETF版本的QUIC协议草案版本号已经到dr ...

  8. 在Ubuntu 16.04.3 LTS上安装Go 1.10

    升级Go新版本的原因 目前Ubuntu 16.04.3上最新的二进制Go版本是1.6.2,运行github上的一个大的go项目,发现context包在go版本1.6以上和以下的import方式有差异 ...

  9. 在Ubuntu 16.04.3 LTS上搭建Go语言环境实录

    1.安装 sudo apt-get install golang-go 目前go的最新版本是1.9.2,但是在Ubuntu 16.04上采用预编译好的包安装的话,只能是go 1.6.x版本. 安装完成 ...

最新文章

  1. JIRA与Confluence的安装与集成(4)
  2. java中上传文件有哪些框架,Spring MVC系列教材 (八)- SPRING MVC 上传文件
  3. python 时间序列预测 币价_python时间序列预测股票走势
  4. Linux20180528
  5. php 5.6 文档,文件存储 | 进阶系列 | Laravel 5.6 中文文档
  6. input 模糊匹配功能 文本框模糊匹配(纯html+jquery简单实现) demo
  7. 嵌入式:中断的分类和区别
  8. 如何花式计算20的阶乘?
  9. 论文笔记——DenseNet
  10. asp正则过滤重复字符串的代码
  11. mysql-proxy读写分离,负载均衡
  12. 最强面试题整理第三弹:Python 后台开发面试题(附答案)
  13. JLink EDU v7.58 变砖修复
  14. html中图片一角的卷起效果,CSS3实现图片折角效果例子
  15. 第1期技术: DQN算法原理及实现过程
  16. android:查询数据库 指定列 指定列名 并输出查询结果(如查询电话本,SMS的ContentResolver提供的)
  17. 双系统模式下如何卸载ubuntu系统
  18. WIN7电脑如何共享WiFi
  19. Classpath entry *.jar will not be exported or published.禁告
  20. Egret 5.3 正式发布,为重度小游戏开发带来新技能

热门文章

  1. Aurora的安装和中文配置
  2. MyBatis启动:MapperStatement创建
  3. 2022-2028年中国塑料网格板行业市场行情动态及发展趋向分析报告
  4. C C++的编译过程详解
  5. 基础 HTML之目录问题(相对路径和绝对路径区别)
  6. [转]C#日期格式化 文档
  7. python拟合求参_机器学习作业(四)神经网络参数的拟合——Python(numpy)实现
  8. 人工智能诗歌写作平台_人工智能将改变文学创作的未来?
  9. python write和writelines的区别_简单了解Python write writelines区别
  10. 如何在notebook中的markdown中插入截取的图片_96编辑器教你如何在文章中插入图片、视频、音频!...