go学习 --- web的cookie信息

一、server

package main

import (
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"net/http"
)

func main()  {
	http.HandleFunc("/login",login)
	err := http.ListenAndServe(":2001", nil)
	if err != nil {
		log.Fatal(err)
	}
}
func login(w http.ResponseWriter,r *http.Request)  {
	r.ParseForm()
	bytes, err := ioutil.ReadAll(r.Body)
	if err != nil {
		log.Fatal(err)
	}
	r.Body.Close()
	fmt.Println("Body:",string(bytes))
	fmt.Printf("r=%+v\n",r)
	fmt.Printf("r.Header=%+v\n",r.Header)
	fmt.Printf("Content-Type=%+v\n",r.Header["Content-Type"])
	fmt.Printf("r.Cookies()=%+v\n",r.Cookies())
	//打印Cookie信息
	cookie, err := r.Cookie("userId")
	if err == nil {
		//打印cookie信息
		fmt.Println(cookie.Name,cookie.Value)
	}
	if len(r.Form["username"]) > 0 {
		username := r.Form["username"][0]
		fmt.Println("username:",username)
	}
	if len(r.Form["password"]) > 0 {
		password := r.Form["password"][0]
		fmt.Println("password",password)
	}
	io.WriteString(w,"登录成功")
}

二、cilent

package main

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"net/url"
)

func main() {
	urls := "http://localhost:2001/login"
	client := http.Client{}
	param := url.Values{
		"username" : {"kkkk"},
	}
	requestBody := bytes.NewBufferString(param.Encode())
	request, err := http.NewRequest("POST", urls, requestBody)
	if err != nil {
		log.Fatal(err)
	}
    //cookie的添加方式一
    cookId := &http.Cookie{Name:"userId",Value:"1234"}
	cookieName := &http.Cookie{Name: "name", Value: "456"}
	request.AddCookie(cookId)
	request.AddCookie(cookieName)
	//cookie的添加方式二
	request.Header.Set("Content-Type","application/x-www-form-urlencoded")
	response, err := client.Do(request)
	if err != nil {
		log.Fatal(err)
	}
	defer response.Body.Close()
	if response.StatusCode == 200 {
		all, err := ioutil.ReadAll(response.Body)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(string(all))
	}
	fmt.Printf("response:%+v\n",response)
	fmt.Printf("response.Header:%+v\n",response.Header)

}

 

三、设置cookie

package main

import (
	"fmt"
	"net/http"
)

func SetCookie(w http.ResponseWriter,r *http.Request)  {
	//设置cookie
	cookie := http.Cookie{
		Name:   "name",
		Value:  "laowang",
		Path:   "/",
		MaxAge: 30,
	}
	http.SetCookie(w,&cookie)
	w.Write([]byte("write cookie ok"))
}
func GetCookie(w http.ResponseWriter,r *http.Request)  {
	//读取cookie
	cookie, _ := r.Cookie("name")
	fmt.Fprint(w,cookie)
}
func main() {
	http.HandleFunc("/SetCookie",SetCookie)
	http.HandleFunc("/GetCookie",GetCookie)
	http.ListenAndServe(":8080",nil)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值