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

86 lines
1.5 KiB

3 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. }