我正在使用Golang执行get请求,我也尝试了三种不同的实现,但没有成功。对于所有这些,我收到这个错误消息:
收到https://11.11.11.1:0000/httpgw.conf?Type=SMS
Bellow是我工作的整个源代码:
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。十一点一零零零零
收到https://11.11.11.1:0000/httpgw.conf?Type=SMS
^:退出
我正在windows server 2012中运行golang应用程序,但我对服务器技术堆栈一无所知。
有可能解决这个问题吗?是否有一个配置解决方法或其他我可以尝试的方法?
谢谢你的帮助
我很高兴与大家分享,我已经实现了所需的实现。
下面的代码有效!
感谢您的评论,这些评论为我提供了完成此任务的正确方法:
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)
}
}
谢谢大家的支持!
问题内容: 我运行一个码头工人二元我建(以下此),当我做了,我得到这个错误。 来自守护程序的错误响应:获取https://registry-1.docker.io/v2/:proxyconnect tcp:tls:接收到长度超过20527的超大记录 我已经按此处所述设置了代理,并且可以使用默认守护程序和相同的代理设置正常工作。将DNS更改为8.8.8.8似乎没有帮助。 导致100%的数据包丢失。
本文向大家介绍.net mvc超过了最大请求长度的解决方法,包括了.net mvc超过了最大请求长度的解决方法的使用技巧和注意事项,需要的朋友参考一下 在我们的项目中遇到"超过了最大请求长度"如下图所示,是因为IIS默认请求长度4M,当请求长度大于这个值的时候报错,下面是解决方案. 解决方案:修改web.config文件 1、注意在mvc中有两个web.config文件,如下图,一个位于Views
向传递的 URL 发出一个 GET 请求。 使用 XMLHttpRequest web API 向给定的 url 发出 get 请求。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第四个参数 err ,默认将错误记录到控制台的 error 流。 const httpGet = (url,
本文向大家介绍get请求传参长度的误区?相关面试题,主要包含被问及get请求传参长度的误区?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是来源与浏览器或web服务器,浏览器或web服务器限制了url的长度。为了明
通过邮递员API正在工作,但相同的API不与改造工作,我收到400个错误的改造要求 返回true或false的endpoint@POST(“/emrmegax/api/allscript/saveappointment”)调用saveappointment(@Header(“x-auth-token”)字符串header1,@Body字符串yy);
当我调用restendpoint(rest模板http客户端)“myservice..com/rest/api/”时,有时会出现以下错误。此错误的原因是什么?这是客户端还是服务器错误?