模拟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\n", err) panic(err) } fmt.Printf("login status=%s\n", 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\n", err) panic(err) } defer resp.Body.Close() body,_ := ioutil.ReadAll(resp.Body) fmt.Printf("dologin status=%s\n", resp.Status) fmt.Printf("dologin response body=%s\n", string(body)) apiAddr := "http://your.web.site/path" apiResp, apiErr := client.Get(apiAddr) if apiErr != nil { fmt.Printf("api query failed: %s\n", apiErr) panic(apiErr) } defer apiResp.Body.Close() body,_ = ioutil.ReadAll(apiResp.Body) fmt.Printf("api query status=%s\n", apiResp.Status) fmt.Printf("api query response body=%s\n", string(body)) fmt.Printf("cost=%s\n", time.Now().Sub(now)) }
作者:Standby — 一生热爱名山大川、草原沙漠,还有我们小郭老师!
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。