5 function whichButton(event) 6 { 7 if (event.button==2) 8 { 9 alert("你点击了鼠标右键!""> 在Ubuntu 16.04.3 LTS上运行go+https+json示例 - 11GX
首页 > 在Ubuntu 16.04.3 LTS上运行go+https+json示例

在Ubuntu 16.04.3 LTS上运行go+https+json示例

下面是我依据网上资料的实操过程,记录以作备忘。该示例给出了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
", 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

更多相关:

  • hive提供了json的解析函数:get_json_object   使用方法 对于jsonArray(json数组),如person表的xjson字段有数据: [{"name":"王二狗","sex":"男","age":"25"},{"name":"李狗嗨","sex":"男","age":"47"}] 取出第一个json对象...

  • 1、判断json是否为空 jQuery.isEmptyObject(); 2、遍历json function getHsonLength(json{var jsonLength=0;for (var i in json){jsonLength++;}return jsonLength;} 转载于:https...

  • 简单示例: import request from 'superagent';//引用声明 request.post(api).withCredentials()//跨域.end((err, res) => {if (res.ok) {const json = JSON.parse(res.text);} else {console...

  • 在使用C#开发爬虫程序时,会遇到需要解析json字符串的情况。对于json字符串可以使用正则表达式的形式进行解析,更为方便的方法是使用Newtonsoft.Json来实现。 Nuget添加应用包 在工程上右键——【管理Nuget程序包】浏览找到要安装的程序包Newtonsoft.Json使用 引用using Newtonsoft...

  •     注意,前情提示: 本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》 传送门Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)_你挚爱的强哥❤给你发来1条消息❤-CSDN博客   在/api/demo/文件夹下面创建CURD.base.j...

  •     注意,前情提示: 本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》 传送门Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)_你挚爱的强哥❤给你发来1条消息❤-CSDN博客   在/api/demo/文件夹下面创建copyFileOrF...

  • 1 1. 鼠标的哪个按键被点击? 2 3 4