golang入门案例之http client请求

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

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)
	}
}

  

原文地址:https://www.cnblogs.com/nazhizq/p/8297997.html

时间: 2024-08-02 06:24:13

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

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

SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 SpringMVC请求流程图 SpringMVC请求流程图语述: request-------->DispatcherServler(中央调度器/前端控制器)-----> HandlerMapping(处理器映射器)------>返回一个执行链----->将执行链转交给HandlerAdap

_00017 Kafka的体系结构介绍以及Kafka入门案例(初级案例+Java API的使用)

博文作者:妳那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Kfaka的体系结构 # 学习前言 Kafka的整个学习过程就是自己看官网的文档,出

Java程序员的Golang入门指南(下)

Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合切片等特性相比Java的确提高了开发效率,但这些在其他语言中也都有,并不是Golang能真正吸引人的地方.不仅是Golang,我们学习任何语言当然都是从基本语法特性着手,但学习时要不断地问自己:使这门语言区别于其他语言的"独到之处"在哪?这种独到之处往往反映了语言的设计思想.出发点.要解决

Servlet简要介绍及入门案例。

什么是Servlet呢? Servlet 试运行在服务器端的一个小的java程序,接收和相应从客户端发送的请求. 那么Servlet的作用是什么呢? 处理客户端的请求,并且对请求作出相应. 下面是Servlet的简单入门案例: //编写一个类实现Servlet接口 public  class ServletTest1  implements   Servlet{ public  void  service(ServletRequest request , ServletResponse  res

浅谈JavaWEB入门必备知识之Servlet入门案例详解

工欲善其事.必先利其器,想要成为JavaWEB高手那么你不知道servlet是一个什么玩意的话,那就肯定没法玩下去,那么servlet究竟是个什么玩意?下面,仅此个人观点并通过一个小小的案例来为大家详述一下什么是servlet... 个人观点:说白了,servlet就是一个java应用程序.一个运行在服务器上java类,servlet就是java处理web请求的一种机制,它具有独立于平台和协议的特性,可以生成动态的Web页面.再形象点,就是你通过IE等浏览器发送一个http请求后会根据你请求的内

_00019 Storm的体系结构介绍以及Storm入门案例(官网上的简单Java案例)

博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Storm

_00017 Flume的体系结构介绍以及Flume入门案例(往HDFS上传数据)

博文作者:妳那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:hadoop,数据分析与挖掘 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # 学习前言 想学习一下Flume,网上找了好多文章基本上都说的很简单,只有一半什么的,简直就是坑爹,饿顿时怒火就上来了,学个东西真不容易,然后自己耐心的把这些零零碎碎的东西整理整理,各种

MyBatis入门案例 增删改查

一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybat

Node.js基本介绍和服务端创建的入门案例

node.js介绍 简单去理解 Node.js 是JavaScript的一个平台,Node.js这个平台允许使用JavaScript来作为后台语言. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. ? Node.js 三大特点 单线程:即只有一条线程来去处理所有请求,即Node.js不会为每个用户连接创建一