网络相关
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
2.3 KiB

3 years ago
2 years ago
  1. package network
  2. import (
  3. "io/ioutil"
  4. "net/http"
  5. "strings"
  6. )
  7. /**
  8. * 自定义HTTP请求
  9. */
  10. func MethodHttp(method, url, param string, header ...map[string]string) ([]byte, error) {
  11. httpClient := &http.Client{}
  12. req, err := http.NewRequest(method, url, strings.NewReader(param))
  13. if err != nil {
  14. return []byte(""), err
  15. }
  16. req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  17. if len(header) > 0 {
  18. for _, item := range header {
  19. for k, v := range item {
  20. req.Header.Set(k, v)
  21. }
  22. }
  23. }
  24. resp, err := httpClient.Do(req)
  25. if err != nil {
  26. return []byte(""), err
  27. }
  28. defer resp.Body.Close()
  29. body, err := ioutil.ReadAll(resp.Body)
  30. if err != nil {
  31. return []byte(""), err
  32. }
  33. return body, nil
  34. }
  35. /**
  36. * 自定义HTTP请求
  37. */
  38. func SendHttp(method, url string, param map[string]string, header ...map[string]string) ([]byte, error) {
  39. httpClient := &http.Client{}
  40. paramStr := ""
  41. if len(param) > 0 {
  42. for key, value := range param {
  43. paramStr += key + "=" + value + "&"
  44. }
  45. paramStr = paramStr[0 : len(paramStr)-1]
  46. }
  47. req, err := http.NewRequest(method, url, strings.NewReader(paramStr))
  48. if err != nil {
  49. return []byte(""), err
  50. }
  51. req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  52. if len(header) > 0 {
  53. for _, item := range header {
  54. for k, v := range item {
  55. req.Header.Set(k, v)
  56. }
  57. }
  58. }
  59. resp, err := httpClient.Do(req)
  60. if err != nil {
  61. return []byte(""), err
  62. }
  63. defer resp.Body.Close()
  64. body, err := ioutil.ReadAll(resp.Body)
  65. if err != nil {
  66. return []byte(""), err
  67. }
  68. return body, nil
  69. }
  70. /**
  71. * send xml
  72. */
  73. func SendXml(method, url string, requestxml interface{}, header ...map[string]string) ([]byte, error) {
  74. bytexml, err := xml.Marshal(&requestxml)
  75. if err != nil {
  76. return []byte(""), err
  77. }
  78. httpClient := &http.Client{}
  79. req, err := http.NewRequest(method, url, bytes.NewBuffer(param))
  80. if err != nil {
  81. return []byte(""), err
  82. }
  83. req.Header.Add("Content-Type", "application/xml; charset=utf-8")
  84. if len(header) > 0 {
  85. for _, item := range header {
  86. for k, v := range item {
  87. req.Header.Add(k, v)
  88. }
  89. }
  90. }
  91. resp, err := httpClient.Do(req)
  92. if err != nil {
  93. return []byte(""), err
  94. }
  95. defer resp.Body.Close()
  96. body, err := ioutil.ReadAll(resp.Body)
  97. if err != nil {
  98. return []byte(""), err
  99. }
  100. return body, nil
  101. }