发请求,接收接送,并解析

package main

import (
"fmt" "net/http"
"io/ioutil"
"net/url"
"encoding/json"
"os" ) type Student struct {
Name string
Age int
Guake bool
Classes []string
Price float32
} func (s *Student) ShowStu() {
fmt.Println("show Student :")
fmt.Println("\tName\t:", s.Name)
fmt.Println("\tAge\t:", s.Age)
fmt.Println("\tGuake\t:", s.Guake)
fmt.Println("\tPrice\t:", s.Price)
fmt.Printf("\tClasses\t: ")
for _, a := range s.Classes {
fmt.Printf("%s ", a)
}
fmt.Println("")
} type multitypeTest struct {
One string `json:"one"`
Two string `json:"two"`
}
func (s *multitypeTest) Showmul() {
fmt.Println("show Student :")
fmt.Println("\tName\t:", s.One)
fmt.Println("\tAge\t:", s.Two) }
func IndexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "hello world")
}
func main() {
//jsonTest()
httpGet() }
func httpPostForm() { resp, err := http.PostForm("",
url.Values{"key": {"Value"}, "id": {"123"}}) if err != nil {
// handle error
} defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
} fmt.Println(string(body)) }
func httpGet() {
resp, err := http.Get("https://X.rong360.com/XXX/XXX")
CheckError(err)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
CheckError(err)
fmt.Println(string(body))
//f1 := &multitypeTest{
// One:"a",
// Two:"b",
// }
//f1.Showmul()
//fjson1, err := json.Marshal(f1)
//fmt.Println(string(fjson1))
CheckError(err)
f2 := &multitypeTest{}
err = json.Unmarshal([]byte(body), &f2)
CheckError(err)
f2.Showmul() } func jsonTest() {
//解析固定结构的json
st := &Student{
"Xiao Ming",
16,
true,
[]string{"Math", "English", "Chinese"},
9.99,
}
st1, err := json.Marshal(st)
fmt.Println(string(st1))
CheckError(err)
stb := &Student{}
err = json.Unmarshal([]byte(st1), &stb)
stb.ShowStu()
//
//b := []byte(`{1:"Wednesday",2:6,3:["Gomez","Morticia"]}`) ////解析未知结构的json
//var f interface{}
//err = json.Unmarshal(b, &f)
//CheckError(err)
//这是f里面存储的是一个键值对的map
//f = map[string]interface{}{
// "Name": "Wednesday",
// "Age": 6,
// "Parents": []interface{}{
// "Gomez",
// "Morticia",
// },
//}
//m := f.(map[interface{}]interface{})
//for k, v := range m {
// switch vv := v.(type) {
// case string:
// fmt.Println(k, "is string", vv)
// case int:
// fmt.Println(k, "is int", vv)
// case float64:
// fmt.Println(k, "is float64", vv)
// case []interface{}:
// fmt.Println(k, "is an array:")
// for i, u := range vv {
// fmt.Println(i, u)
// }
// default:
// fmt.Println(k, "is of a type I don't know how to handle")
// }
//}
}
func CheckError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
os.Exit(1)
}
}

  

golang入门案例之http client请求的更多相关文章

  1. golang入门案例之SOCKET

    //服务端代码package main import ( "fmt" "net" "log" "os" "en ...

  2. SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)

    SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 Spr ...

  3. window下golang使用gRPC入门案例&net core客户端

    gRPC是google开源高性能分布式RPC框架,支持http/2 双向数据流传输及Protobuff,可以在任何环境下运行. 它可以有效地将数据中心内和跨数据中心的服务与可插拔支持进行负载均衡,跟踪 ...

  4. spring-cloud-Zuul学习(一)【基础篇】--入门案例【重新定义spring cloud实践】

                                                                                                    -- 2 ...

  5. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  6. RabbitMQ入门案例

    RabbitMQ入门案例 Rabbit 模式 https://www.rabbitmq.com/getstarted.html 实现步骤 构建一个 maven工程 导入 rabbitmq的依赖 启动 ...

  7. SpringMvc核心流程以及入门案例的搭建

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  8. MyBatis入门案例、增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  9. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

随机推荐

  1. 自学Python-基于tcp协议的socket

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  2. No training required: Exploring random encoders for sentence classification(解析)

    原文链接:https://arxiv.org/abs/1901.10444 发表在:ICLR 2019 ------------------------------------------------ ...

  3. document.compatMode,quirks mode and standards mode

    Document.compatMode Indicates whether the document is rendered in Quirks mode or Standards mode. Syn ...

  4. crt执行cat命令后乱码

    cat查看二进制文件后所有命令都乱码执行reset即可恢复

  5. 一个微信小程序跳转到另一个微信小程序

    简单来说分两步走: 1.配置项目根目录的 app.json 文件中的 navigateToMiniProgramAppIdList { "pages": [ "pages ...

  6. JDK8之Stream新特性

    https://www.cnblogs.com/cbxBlog/p/9123106.html /** *JDK8 Stream特性 * Created by chengbx on 2018/5/27. ...

  7. cookie和session django中间件

    目录 一.cookie和session 1. 为什么要有cookie和session 二.cookie 1. 什么是cookie 2. django中关于cookie的使用 (1)后端设置cookie ...

  8. mysql更改列属性的一些用法

    更改mysql 主键属性 alter table rbac_auth change column id id int auto_increment

  9. ubuntu+tomcat+jenkins+git+maven

    1.下载tomcat.jdk和jenkins.war (下面通过wget下载的jdk-8u231-linux-x64.tar.gz不能用,需要本地下载后上传到服务器)解决Linux上解压jdk报错gz ...

  10. react页面跳转

    <Button style={{backgroundColor:'#F0F2F5'}} onClick={()=>{window.location.href="https://b ...