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

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. SpringBoot 企业级核心技术学习专题

    专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Boot 核心技术章节源码 Spring Boot 核心技术 ...

  2. PAT Basic 1007 素数对猜想 (20 分)

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...

  3. 小程序UI设计(6)-布局分解-九宫格

    今天我们来个庖丁解牛.对于一个完整的组合组件,看看通过工具是如何轻松完成的.首先看看九宫格完整的样子. 结构树是这样的.在结构树中,我们可以看到WViewColumn下面有九个WViewRow.WVi ...

  4. Android九宫格解锁有多少种姿势

    参考知乎:知乎.

  5. k8sService资源

    一.service资源及其实现模型 通过规则定义出由多个pod对象组合而成的逻辑集合,以及访问这组pod的策略.service关联pod资源的规则要借助于标签选择器来完成 1.service资源概述 ...

  6. c#图像处理的简单算法

    原文链接:https://blog.csdn.net/wchstrife/article/details/78984735 使用C#进行图像处理前言之前一直认为图像处理是一件很高大上的事情,在一门选修 ...

  7. qt5--字符串格式拼接

    QString str=QString("x坐标为:%1  y坐标为:%2").arg(i).arg(j);

  8. 实现分享功能(分享到qq空间,新浪微博)

        //分享QQ好友    function qq(title,url,pic)    {        var p = {            url: 'http://test.qichey ...

  9. 注意vue-router嵌套路由的问题:子路由组件中的class名和本组件页面的class名相同时,子路由组件的样式被覆盖。

    注意vue-router嵌套路由的问题:子路由组件中的class样式被覆盖,当需要用到路由嵌套时,clas命名时注意不要相同. 点击查看上一篇vue-router嵌套路由具体 例子: 子路由a组件中: ...

  10. 【leetcode】1247. Minimum Swaps to Make Strings Equal

    题目如下: You are given two strings s1 and s2 of equal length consisting of letters "x" and &q ...