跳到主要内容

buffer 循环读取

func getPayChanel(no string) (string, error) {
url := "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + no + "&cardBinCheck=true"

// 超时时间:5秒
client := &http.Client{Timeout: 5 * time.Second}
resp, err := client.Get(url)
if err != nil {
return "", err
}
defer resp.Body.Close()
var buffer [512]byte
result := bytes.NewBuffer(nil)
for {
n, err := resp.Body.Read(buffer[0:])
result.Write(buffer[0:n])
if err != nil && err == io.EOF {
break
} else if err != nil {
return "", err
}
}

paramsBody := map[string]interface{}{}
if err := json.Unmarshal(result.Bytes(), &paramsBody); err != nil {
return "", err
}
typeStr, ok := paramsBody["bank"]
if !ok {
return "", e.New("map error")
}
str, ok := typeStr.(string)
if !ok {
return "", e.New("map error")
}

return str, nil
}