为了账号安全,请及时绑定邮箱和手机立即绑定

net/http GET 请求错误 tls 接收到长度为 20527 的超大记录

net/http GET 请求错误 tls 接收到长度为 20527 的超大记录

Go
茅侃侃 2021-12-06 19:49:11
我坚持使用 Golang 执行 get 请求,我也尝试了三种不同的实现,但都没有成功。对于他们所有人,我都收到此错误消息:获取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: 接收到长度为 207 的超大记录Bellow 是我正在处理的整个源代码:    package mainimport (    "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)        }我在 windows server 2012 中运行 golang 应用程序,但我对服务器技术堆栈一无所知。有可能解决这个问题吗?有配置解决方法或我可以尝试的其他方法吗?感谢您的帮助
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我很高兴与您分享我达到了所需的实现。


下面的代码有效!


感谢您的评论指导我找到正确的方法来完成这项任务:


package main



import (

 "bufio"

 "crypto/tls"

 "fmt"

 "io/ioutil"

 "net"

 "net/http"

 "os"

)



func main() {



 cmdSecSMS := "GET https://10.xxx.xx.x:xx43/httpgw.conf?" +

 "Type=SMS&Address=5511111&MsgID=123&Notify=N&Validity=24:00&OAdC=15555&" +

 "Message=blablah " +

 "HTTP/1.1"



 fmt.Println(cmdSecSMS)

 cmdSecUrlSMS := cmdSecSMS

 hostName := "10.xxx.xx.x"

 portNum := "xx43"


 doDial(cmdSecUrlSMS, hostName, portNum)


 //doClientTrans(cmdSecUrlSMS)


 //doGetClient(cmdSecUrlSMS)


 //doGet(cmdSecUrlSMS)


}



func doDial(cmd, host, port string) {

 // connect to this socket

 conn, err := net.Dial("tcp", host+":"+port)



 if err != nil {

 fmt.Printf("Some error %v", err)

 return

 } else {

 defer conn.Close()

 fmt.Printf("Connection established between %s and localhost.\n", host)

 fmt.Printf("Local Address : %s \n", conn.LocalAddr().String())

 fmt.Printf("Remote Address : %s \n", conn.RemoteAddr().String())



 // send to socket

 fmt.Fprintf(conn, cmd+"\n")

 // listen for reply

 message, _ := bufio.NewReader(conn).ReadString('\n')

 fmt.Print("Message from server: " + message)

 }

}


谢谢小伙伴们的支持!


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信