调试通过webservice
diff --git a/webservice.go b/webservice.go
index d11fc1e..732f8be 100644
--- a/webservice.go
+++ b/webservice.go
@@ -1,11 +1,10 @@
-package main
-
-//swwebservice
+package swservice
import (
"bytes"
"crypto/hmac"
"crypto/sha1"
+ "encoding/hex"
"encoding/json"
"errors"
"fmt"
@@ -32,39 +31,6 @@
session_key string
}
-type MessageReader struct {
- FuncNo int
- ColumnNames []string
- ColumnDescs []string
- RowData [][]interface{}
-}
-
-type MessageWriter struct {
- FuncNo int
- Attributes map[string]string
- ColumnNames []string
- ColumnDescs []string
- RowData [][]interface{}
-}
-
-func NewMessageWriter(funcno int) *MessageWriter {
- return &MessageWriter{
- FuncNo: funcno,
- Attributes: make(map[string]string),
- ColumnNames: make([]string, 0),
- ColumnDescs: make([]string, 0)}
-}
-func (m *MessageWriter) SetAttr(name, value string) {
- m.Attributes[name] = value
-}
-func (m *MessageWriter) AddCol(name, desc string) {
- m.ColumnNames = append(m.ColumnNames, name)
- m.ColumnDescs = append(m.ColumnDescs, desc)
-}
-func (m *MessageWriter) AddRow(data []string) {
- // m.RowData[] = append(m.RowData)
-}
-
func (w *WebSession) DoGet(uri string, params map[string]string) (*http.Response, error) {
transport := http.Transport{Dial: dailTimeout}
@@ -73,18 +39,13 @@
full_url := w.BaseUrl + uri
vl := url.Values{}
- // vl.Add("app_id", w.AppId)
- // ts := w.GetTimestamp()
- // vl.Add("timestamp", ts)
if params != nil {
for k, v := range params {
vl.Add(k, v)
}
}
- // 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)
}
@@ -95,34 +56,31 @@
}
func (w *WebSession) Sign(message string) string {
- // pridata := accesstoken + timestamp
- mac := hmac.New(sha1.New, []byte(w.session_key))
+ mac := hmac.New(sha1.New, []byte(w.Appsecret))
mac.Write([]byte(message))
res := mac.Sum(nil)
- // res := sha1.Sum([]byte(pridata))
- return string(res[0:])
+ return hex.EncodeToString(res)
}
-func (w *WebSession) DoPost(uri string, param map[string]string, json_data []byte) (*http.Response, error) {
+func (w *WebSession) DoPost(uri string, param map[string]string) (*http.Response, error) {
transport := http.Transport{Dial: dailTimeout}
client := &http.Client{Transport: &transport}
- vl := url.Values{}
- vl.Add("app_id", w.AppId)
+ param["app_id"] = w.AppId
+ param["term_id"] = w.TermId
+ param["sign_method"] = "HMAC"
+ param["session_key"] = w.session_key
ts := w.GetTimestamp()
- vl.Add("timestamp", ts)
- vl.Add("sign", w.Sign(ts+vl.Encode()))
- if param != nil {
- for k, v := range param {
- vl.Add(k, v)
- }
- }
- if json_data != nil {
- vl.Add("request_data", string(json_data))
- }
+ param["timestamp"] = ts
+ param["sign"] = w.Sign(w.AppId + w.TermId + w.session_key + ts)
full_url := w.BaseUrl + uri
log.Debugf("Url=%v", full_url)
- r, err := client.Post(full_url, "application/x-www-form-urlencoded", bytes.NewReader([]byte(vl.Encode())))
+ data, err := json.Marshal(param)
+ if err != nil {
+ return nil, err
+ }
+ var r *http.Response
+ r, err = client.Post(full_url, "application/json", bytes.NewReader(data))
if err != nil || r.StatusCode != 200 {
log.Errorf("Status=%v, err=%v", r, err)
}
@@ -158,7 +116,7 @@
AccessToken string `json:"access_token"`
}
- uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%v/getaccesstoken", w.AppId)
+ uri := fmt.Sprintf("/authservice/getauth/%v/getaccesstoken", w.AppId)
params := make(map[string]string)
params["term_id"] = w.TermId
@@ -189,7 +147,7 @@
CardKey string `json:"card_key"`
}
- uri := fmt.Sprintf("/yktapi/services/authservice/getauth/%v", w.AppId)
+ uri := fmt.Sprintf("/authservice/getauth/%v", w.AppId)
params := make(map[string]string)
params["term_id"] = w.TermId
@@ -207,60 +165,28 @@
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.SessionKey
return nil
}
-func (w *WebSession) PushTransdtl(msg MessageWriter) {
- type FormJson struct {
+
+func (w *WebSession) CallYKTApi(request *MessageWriter) (*MessageReader, error) {
+ call_data := request.Serialize()
+ params := make(map[string]string)
+ params["funcdata"] = call_data
+ r, err := w.DoPost("/ecardservice/ecardapi", params)
+
+ if err != nil || r.StatusCode != 200 {
+ log.Errorf(" err = %v\n", err)
+ return nil, err
}
- // uri := fmt.Sprintf("/yktapi/services/ecardservice")
- // params := make(map[string]string)
- // params["term_id"] = w.TermId
- // params["access_token"] = w.AccessToken
- // params["timestamp"] = w.GetTimestamp()
- // signMsg := w.AppId + w.TermId + w.session_key + params["timestamp"]
- // params["sign"] = w.Sign(signMsg)
- // params["sign_method"] = "HMAC-SHA1"
- // temp := json.Marshal(msg)
- // params["funcdata"] = string(temp[0:])
-
- // r, err := w.DoPost(uri, params, nil)
- // if err != nil || r.StatusCode != 200 {
- // log.Errorf("Status = %v, err = %v\n", r.StatusCode, err)
- // return
- // }
- // if r.ContentLength == -1 {
- // log.Error("no response")
- // return
- // }
- // contents := make([]byte, r.ContentLength)
- // r.Body.Read(contents)
-
- // var s FormJson
- // err = json.Unmarshal(contents, &s)
- // if err != nil {
- // log.Errorf("json unmarshal err %v", err)
- // return
- // }
- // temp = s.
-}
-
-func main() {
- websession := NewSession("10001", "", "100", "http://172.28.200.122:8080", 3)
- fmt.Println(websession.AppId)
- if err := websession.Auth(); err != nil {
- fmt.Printf("Error : %v\n", err)
- }
- // websession.GetAppAccessKey()
-
+ body, err := ioutil.ReadAll(r.Body)
+ r.Body.Close()
+ return NewMessageReader(body), nil
}