模拟beego登陆

模拟beego登陆

package main

import (
	"fmt"
	"time"
	"io/ioutil"
	"net/url"
	"net/http"
	"net/http/cookiejar"
)

func main() {
	now := time.Now()

	var err error
	var resp *http.Response
	loginAddr := "http://your.web.site/home/login"
	resp, err = http.Get(loginAddr)
	if err != nil {
		fmt.Printf("login failed: %s
", err)
		panic(err)
	}
	fmt.Printf("login status=%s
", resp.Status)

	doLoginAddr := "http://your.web.site/home/dologin"
	jar, _ := cookiejar.New(nil)
	doLoginUrl, _ := url.Parse(doLoginAddr)
	jar.SetCookies(doLoginUrl, resp.Cookies())
	client := http.Client{Jar: jar}
	resp, err = client.PostForm(doLoginAddr, url.Values{"UserName": {"YourName"}, "UserPwd": {"YourPassword"}})
	if err != nil {
		fmt.Printf("dologin failed: %s
", err)
		panic(err)
	}
	defer resp.Body.Close()
	body,_ := ioutil.ReadAll(resp.Body)
	fmt.Printf("dologin status=%s
", resp.Status)
	fmt.Printf("dologin response body=%s
", string(body))

	apiAddr := "http://your.web.site/path"
	apiResp, apiErr := client.Get(apiAddr)
	if apiErr != nil {
		fmt.Printf("api query failed: %s
", apiErr)
		panic(apiErr)
	}
	defer apiResp.Body.Close()
	body,_ = ioutil.ReadAll(apiResp.Body)
	fmt.Printf("api query status=%s
", apiResp.Status)
	fmt.Printf("api query response body=%s
", string(body))

	fmt.Printf("cost=%s
", time.Now().Sub(now))
}

  

原文地址:https://www.cnblogs.com/standby/p/13073592.html