内部网路不能直接访问外网接口,可以通过代理发送HTTP请求。
HTTP代理服务需要进行认证。
package cmd
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
"strings"
)
// 推送CBC07功能
func main() {
log.Println("开启http代理服务...")
proxyURL, err := url.Parse("http://username:password@proxyServerIp:port")
if err != nil {
fmt.Println("Failed to parse proxy URL:", err)
// return err
return
}
// 创建 HTTP 客户端并设置代理
httpClient := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
},
}
log.Println("开启请求推送...")
urls := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=123456"
method := "POST"
payload := strings.NewReader(`
{
"chatid": "CHATID",
"msgtype":"image",
"image":{
"media_id": "media_id"
},
"safe":0
}
`)
log.Println("开启请求服务...")
// client := &http.Client{}
req, err := http.NewRequest(method, urls, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
log.Println("执行请求中...")
res, err := httpClient.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
log.Println("读取响应:")
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}