【发布时间】:2016-04-13 05:24:44
【问题描述】:
我坚持使用 Golang 执行获取请求,并且我还尝试了三种不同的实现,但均未成功。对于他们所有人,我都会收到此错误消息:
获取https://11.11.11.1:0000/httpgw.conf?Type=SMS&Address=12345678&MsgID=12 3&Notify=N&Validity=24:00&OAdC=15555&Message=HelloBrother: tls: 超大记录 d 收到,长度为 20527
下面是我正在处理的整个源代码:
package main
import (
"crypto/tls"
"fmt"
"io/ioutil"
"net/http"
"os"
)
func main() {
cmdSecSMS := "https://11.11.11.1:0000/httpgw.conf?Type=SMS&Address=12345678&MsgID=123&Notify=N&Validity=24:00&OAdC=15555&Message="
msg := "HelloBrother"
cmdSecUrlSMS := cmdSecSMS + msg
doClientTrans(cmdSecUrlSMS)
doGetClient(cmdSecUrlSMS)
doGet(cmdSecUrlSMS)
}
func doClientTrans(address string) {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
response, err := client.Get(address)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Printf("%s\n", string(contents))
fmt.Println(" Size: ", len(string(contents)), " url: ", address)
fmt.Println(" Status Code: ", response.StatusCode)
hdr := response.Header
for key, value := range hdr {
fmt.Println(" ", key, ":", value)
}
}
}
func doGet(url string) {
response, err := http.Get(url)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Println(" Size: ", len(string(contents)), " url: ", url)
fmt.Println(" Status Code: ", response.StatusCode)
hdr := response.Header
for key, value := range hdr {
fmt.Println(" ", key, ":", value)
}
}
}
func doGetClient(url string) {
client := &http.Client{}
response, err := client.Get(url)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Println(" Size: ", len(string(contents)), " url: ", url)
fmt.Println(" Status Code: ", response.StatusCode)
hdr := response.Header
for key, value := range hdr {
fmt.Println(" ", key, ":", value)
}
}
}
使用telnet时,这个GET请求正常工作:
远程登录 11.11.11.1 0000
获取https://11.11.11.1:0000/httpgw.conf?Type=SMS&Address=12345678&MsgID=12 3&Notify=N&Validity=24:00&OAdC=15555&Message=HelloBrother HTTP/1.1
^: 退出
我在 windows server 2012 中运行 golang 应用程序,但我对服务器技术堆栈一无所知。
有可能解决这个问题吗?有配置解决方法或其他我可以尝试的方法吗?
感谢您的帮助
【问题讨论】:
-
如果可以使用telnet,那就不是HTTPS。
标签: networking go https get network-programming