2016-01-08 41 views
-1

我正在使用Golang来执行获取请求,我也尝试过三种不同的实现,但都没有成功。对于所有这些我收到此错误消息:净/ http GET请求错误tls超长的记录收到的长度20527

获取https://11.11.11.1:0000/httpgw.conf?Type=SMS&Address=12345678&MsgID=12 通知= N &有效期= 24:00 & OADC = 15555 &消息= HelloBrother:TLS:超大录音功与长度20527接收 d

贝娄是我对工作的整个源代码:

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请求,也没有工作马利:

的telnet 11.11.11.1 0000

https://11.11.11.1:0000/httpgw.conf?Type=SMS&Address=12345678&MsgID=12获取3 通知& = N &有效期= 24:00 & OADC = 15555 &消息= HelloBrother HTTP/1.1

^: 出口

enter image description here

我正在运行golang应用程序我在Windows Server 2012中,我对服务器技术堆栈一无所知。

可以解决这个问题吗?有一个配置解决方法或我可以尝试的其他东西?

感谢您的帮助

+5

如果您可以使用telnet,它不是HTTPS。 – JimB

回答

1

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

代码波纹管的作品!

感谢您的意见,指导我正确的方式完成这个任务:

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) 
} 

}

谢谢你们的支持!

相关问题