【GoLang】golang HTTP GET/POST JSON的服务端、客户端示例,包含序列化、反序列化
服务端代码示例:
package main import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
) type User struct {
Name string `json:"name"`
Age int `json:"age"`
} func index(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Println("Form: ", r.Form)
fmt.Println("Path: ", r.URL.Path)
fmt.Println(r.Form["a"])
fmt.Println(r.Form["b"])
for k, v := range r.Form {
fmt.Println(k, "=>", v, strings.Join(v, "-"))
}
fmt.Fprint(w, "It works !")
} func test(w http.ResponseWriter, r *http.Request) {
body, _ := ioutil.ReadAll(r.Body)
// r.Body.Close()
body_str := string(body)
fmt.Println(body_str)
// fmt.Fprint(w, body_str)
var user User
// user.Name = "aaa"
// user.Age = 99
// if bs, err := json.Marshal(user); err == nil {
// fmt.Println(string(bs))
// } else {
// fmt.Println(err)
// } if err := json.Unmarshal(body, &user); err == nil {
fmt.Println(user)
user.Age +=
fmt.Println(user)
ret, _ := json.Marshal(user)
fmt.Fprint(w, string(ret))
} else {
fmt.Println(err)
}
} func main() {
http.HandleFunc("/", index)
http.HandleFunc("/test/", test) if err := http.ListenAndServe("0.0.0.0:8080", nil); err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
客户端代码示例:
package main import (
"fmt"
"io/ioutil"
// "log"
"net/http"
// "strings"
"bytes"
"encoding/json"
) type User struct {
Name string `json:"name"`
Age int `json:"age"`
} func main() {
resp, _ := http.Get("http://10.67.2.252:8080/?a=123456&b=aaa&b=bbb")
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body)) var user User
user.Name = "aaa"
user.Age =
if bs, err := json.Marshal(user); err == nil {
// fmt.Println(string(bs))
req := bytes.NewBuffer([]byte(bs))
tmp := `{"name":"junneyang", "age": }`
req = bytes.NewBuffer([]byte(tmp)) body_type := "application/json;charset=utf-8"
resp, _ = http.Post("http://10.67.2.252:8080/test/", body_type, req)
body, _ = ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
} else {
fmt.Println(err)
} client := &http.Client{}
request, _ := http.NewRequest("GET", "http://10.67.2.252:8080/?a=123456&b=aaa&b=bbb", nil)
request.Header.Set("Connection", "keep-alive")
response, _ := client.Do(request)
if response.StatusCode == {
body, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(body))
} req := `{"name":"junneyang", "age": }`
req_new := bytes.NewBuffer([]byte(req))
request, _ = http.NewRequest("POST", "http://10.67.2.252:8080/test/", req_new)
request.Header.Set("Content-type", "application/json")
response, _ = client.Do(request)
if response.StatusCode == {
body, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(body))
}
}
参考资料:
- golang json.Marshal struct_百度搜索
- golang json 成结构体 详解 - 为程序员服务
- golang的json操作 - liaojie的个人页面 - 开源中国社区
- go语言 获取post方式json | Go语言中文网 | Golang中文社区 | Golang中国
- Golang Web编程的Get和Post请求发送与解析 - 推酷
- go post json 遇到的问题 | Go语言中文网 | Golang中文社区 | Golang中国
- Go语言_HTTP包 - 轩脉刃 - 博客园
- golang中net/http包用法 | Go语言中文网 | Golang中文社区 | Golang中国
- golang使用http client发起get和post请求示例 - 快乐编程
- 使用Golang 搭建http web服务器 - 轩脉刃 - 博客园
- Golang Http Server源码阅读 - 轩脉刃 - 博客园
- golang中发送http请求的几种常见情况 | Go语言中文网 | Golang中文社区 | Golang中国
- golang语言中发起http请求 | Go语言中文网 | Golang中文社区 | Golang中国
golang http请求优化: https://www.douban.com/note/285372115/
goreq: 极简单的流式golang http client: http://www.tuicool.com/articles/FNZbYjj
golang的http client源码简析: http://studygolang.com/articles/5774
http://www.oschina.net/question/593413_119339
【GoLang】golang HTTP GET/POST JSON的服务端、客户端示例,包含序列化、反序列化的更多相关文章
- Mina TCP服务端客户端 示例
服务端代码: package com.xd.nms.example; import java.io.IOException; import java.net.InetSocketAddress; im ...
- TCP/IP网络编程之基于TCP的服务端/客户端(一)
理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...
- react服务端/客户端,同构代码心得
FKP-REST是一套全栈javascript框架 react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...
- JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...
- NTP时间同步 服务端 客户端 自动化安装配置
NTP时间同步 服务端 客户端 自动化安装配置 原创内容 http://www.cnblogs.com/elvi/p/7657994.html #!/bin/sh #运行环境 centos6.cent ...
- chrony时间同步 服务端 客户端 安装配置
chrony时间同步 服务端 客户端 安装配置 原创内容http://www.cnblogs.com/elvi/p/7658021.html #!/bin/sh #运行环境 centos7 #chro ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...
随机推荐
- xss利用和检测平台
xssing 是安全研究者Yaseng发起的一个基于 php+mysql的 网站 xss 利用与检测开源项目,可以对你的产品进行黑盒xss安全测试,可以兼容获取各种浏览器客户端的网站url,cooki ...
- iOS 加急申请每个开发者必须会
加急申请原来做过很多次,有成功,有拒绝(最终还是成功,一次不行,被拒绝后多来几下即可,直到成功).但是听朋友说了一件事情,很是不解:他们希望能快速审核上线,在淘宝里面找加速商店,首次上线12000元, ...
- step 3 socket
socket 网络通讯三要素 IP地址(主机名) 网络中设备的标示 不易记忆,可以用主机名 本地回环地址:127.0.0.1 主机名:localhost 每台计算机都有一个 127.0.0.1 如果 ...
- 黄永成-thinkphp讲解-个人博客讲解26集
如果是要导入 前后台分组都公用的 第三方类库, 就将类库(*.class.php文件) 放在 App下的Class文件夹中. 导入方法是: import('Class.Image', APP_PATH ...
- 用jquery写循环播放div -2
前面所说的class html元素标签的写法也要有层次性, 这个层次性其实也就是常说的 css类写法要有一个"命名空间, 名字空间" "namespace" 在 ...
- vim ctags使用方法
一.用好系统自带软件ctags 大部分的unix系统都有ctags软件,它能跟vim很好地合作. 用途: 生成c语言的标签文件,实现相关c文件之间的跳转. 用法: 1.生成标签文件 ...
- linux shell中判断bash脚本输入的参数个数
看下面的一段程序. #!/bin/bash ]; then echo "参数个数为$#个" else echo "没有参数" fi
- Vagrant error: Your VM has become inaccessible.
博客转自:http://doodlebobbers.com/vagrant-error-your-vm-has-become-inaccessible/ If you’ve deleted a vir ...
- Java学习笔记(二)不定时更新
Java语言画图 package cn.witksy.dev; import javax.imageio.ImageIO; import java.awt.*; import java.awt.ima ...
- Excel 使用宏批量修改单元格内指定文字为红字
-> step 1:新建宏,进入编辑,使用如下代码: Sub Ss()Dim c As RangeFor Each c In ActiveSheet.UsedRange i = 1 While ...