修改代码
diff --git a/webservice.go b/webservice.go
index b226af8..d11fc1e 100644
--- a/webservice.go
+++ b/webservice.go
@@ -7,8 +7,10 @@
"crypto/hmac"
"crypto/sha1"
"encoding/json"
+ "errors"
"fmt"
log "github.com/Sirupsen/logrus"
+ "io/ioutil"
"net"
"net/http"
"net/url"
@@ -25,7 +27,6 @@
AppId string
TermId string
Appsecret string
- AccessToken string
BaseUrl string
DefaultTimeout int
session_key string
@@ -83,6 +84,7 @@
}
// vl.Add("sign", w.Sign(ts, vl.Encode()))
full_url = full_url + "?" + vl.Encode()
+ fmt.Printf("url: %v\n", full_url)
return client.Get(full_url)
}
@@ -128,8 +130,14 @@
}
func (w *WebSession) Auth() error {
-
- // now := time.Now()
+ token, err := w.getAuthToken()
+ if err != nil {
+ return err
+ }
+ err = w.getAppAccessKey(token)
+ if err != nil {
+ return err
+ }
return nil
}
@@ -143,14 +151,14 @@
}
}
-func (w *WebSession) GetAuthToken() {
+func (w *WebSession) getAuthToken() (string, error) {
type FormJson struct {
AppId string `json:"app_id"`
TermId string `json:"term_id"`
AccessToken string `json:"access_token"`
}
- uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%06d/getaccesstoken", w.AppId)
+ uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%v/getaccesstoken", w.AppId)
params := make(map[string]string)
params["term_id"] = w.TermId
@@ -159,62 +167,57 @@
if err != nil || r.StatusCode != 200 {
fmt.Println("here")
// log.Errorf("Status = %v, err = %v\n", r.StatusCode, err)
- return
+ return "", errors.New("请求失败")
}
- if r.ContentLength == -1 {
- log.Error("no response")
- return
- }
- contents := make([]byte, r.ContentLength)
- r.Body.Read(contents)
+ body, err := ioutil.ReadAll(r.Body)
+ r.Body.Close()
- var s FormJson
- err = json.Unmarshal(contents, &s)
+ s := &FormJson{}
+ err = json.Unmarshal(body, &s)
if err != nil {
log.Errorf("json unmarshal err %v", err)
+ return "", errors.New("解析失败")
}
-
- w.AccessToken = s.AccessToken
-
- return
+ return s.AccessToken, nil
}
-func (w *WebSession) GetAppAccessKey() {
+func (w *WebSession) getAppAccessKey(token string) error {
type FormJson struct {
- AppId string `json:"app_id"`
- TermId string `json:"term_id"`
- session_key string `json:"session_key"`
- card_key string `json:"card_key"`
+ AppId string `json:"app_id"`
+ TermId string `json:"term_id"`
+ SessionKey string `json:"session_key"`
+ CardKey string `json:"card_key"`
}
- uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%06d", w.AppId)
+ uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%v", w.AppId)
params := make(map[string]string)
params["term_id"] = w.TermId
- params["access_token"] = w.AccessToken
+ params["access_token"] = token
params["timestamp"] = w.GetTimestamp()
params["v"] = "1"
- params["sign"] = w.Sign(w.AccessToken + params["timestamp"])
- params["sign_method"] = "HMAC-SHA1"
+ params["sign"] = w.Sign(token + params["timestamp"])
+ params["sign_method"] = "HMAC"
- r, err := w.DoPost(uri, params, nil)
+ r, err := w.DoGet(uri, params)
if err != nil || r.StatusCode != 200 {
- log.Errorf("Status = %v, err = %v\n", r.StatusCode, err)
+ log.Errorf(" err = %v\n", err)
+ return err
}
- if r.ContentLength == -1 {
- log.Error("no response")
- }
- contents := make([]byte, r.ContentLength)
- r.Body.Read(contents)
- var s FormJson
- err = json.Unmarshal(contents, &s)
+ body, err := ioutil.ReadAll(r.Body)
+ r.Body.Close()
+ // contents := make([]byte, r.ContentLength)
+ // r.Body.Read(contents)
+
+ s := &FormJson{}
+ err = json.Unmarshal(body, &s)
+ fmt.Printf("[%v]\n", string(body))
if err != nil {
log.Errorf("json unmarshal err %v", err)
}
- w.session_key = s.session_key
- //keep card_keyl
- return
+ w.session_key = s.SessionKey
+ return nil
}
func (w *WebSession) PushTransdtl(msg MessageWriter) {
type FormJson struct {
@@ -253,9 +256,11 @@
}
func main() {
- websession := NewSession("10001", "", "100", "172.28.200.122:8080", 3)
+ websession := NewSession("10001", "", "100", "http://172.28.200.122:8080", 3)
fmt.Println(websession.AppId)
- websession.GetAuthToken()
+ if err := websession.Auth(); err != nil {
+ fmt.Printf("Error : %v\n", err)
+ }
// websession.GetAppAccessKey()
}