| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package NetUtils
- import (
- "errors"
- "forward-core/Utils"
- "io/ioutil"
- "net/http"
- "net/url"
- "strings"
- "bytes"
- "github.com/astaxie/beego"
- "github.com/astaxie/beego/logs"
- )
- func GetIP(c *beego.Controller) string {
- //utils.GetIP(&c.Controller)
- //也可以直接用 c.Ctx.Input.IP() 取真实IP
- ip := c.Ctx.Request.Header.Get("X-Real-IP")
- if ip != "" {
- return ip
- }
- ip = c.Ctx.Request.Header.Get("Remote_addr")
- if ip == "" {
- ip = c.Ctx.Request.RemoteAddr
- }
- return ip
- }
- func HttpGet(url string) (string, error) {
- resp, err := http.Get(url)
- if err != nil {
- logs.Error("HttpGet error: ", err)
- return "", err
- }
- if resp == nil {
- return "", errors.New("返回对象为空")
- }
- defer resp.Body.Close()
- result := ""
- body, err := ioutil.ReadAll(resp.Body)
- if err == nil {
- result = string(body)
- //logs.Debug("HttpGet result: ", result)
- } else {
- logs.Error("HttpGet error: ", err)
- }
- return result, nil
- }
- func HttpPostJsonReturnByte(url string, json string) ([]byte, error) {
- resp, err := http.Post(url, "application/json", strings.NewReader(json))
- if err != nil {
- logs.Error("HttpPostJson error: ", err)
- return nil, err
- }
- if resp == nil {
- return nil, errors.New("返回对象为空")
- }
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err == nil {
- return body, err
- //logs.Debug("HttpPostJson result: ", result)
- } else {
- logs.Error("HttpPostJson error: ", err)
- return nil, err
- }
- }
- func HttpPost(url string, param map[string]string) (string, error) {
- var paramBuf bytes.Buffer
- paramBuf.WriteString("curTime=" + Utils.GetCurrentTime())
- for k, v := range param {
- paramBuf.WriteString("&" + k + "=" + v)
- }
- resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(paramBuf.String()))
- if err != nil {
- logs.Error("HttpPost error: ", err)
- return "", err
- }
- if resp == nil {
- return "", errors.New("返回对象为空")
- }
- defer resp.Body.Close()
- result := ""
- body, err := ioutil.ReadAll(resp.Body)
- if err == nil {
- result = string(body)
- logs.Debug("HttpPost result: ", result)
- } else {
- logs.Error("HttpPost error: ", err)
- }
- return result, nil
- }
- func UrlEncode(input string) string {
- if Utils.IsEmpty(input) {
- return ""
- }
- return url.QueryEscape(input)
- }
- func UrlDecode(input string) string {
- if Utils.IsEmpty(input) {
- return ""
- }
- result, err := url.QueryUnescape(input)
- if err != nil {
- return input
- } else {
- return result
- }
- }
|