模拟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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号