网络相关
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.

128 lines
2.3 KiB

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