2017-10-10 64 views
-3

我正在尝试在GO中执行请求,但我总是收到“由对等方重置连接”错误。下面的代码显示了如何正在做请求:由对端重置的连接GO

req, err := http.NewRequest("GET", url, nil) 
if err != nil { 
    return nil, err 
} 
client := = &http.Client{} 
resp, err := client.Do(req) 

if err != nil { 
    return nil, err 
} 

defer resp.Body.Close() 
fmt.Println(resp.Body) 

...我收到:

Get https://example.com: read tcp 1.2.3.4:1234->5.6.7.8:5678: read: connection reset by peer 

当我蜷缩https://example.com我收到响应形成的服务器。 为什么我不能在GO中执行请求?

+2

服务器正在关闭您的连接。你是否控制了端点,并且可以在那里检查日志?这真的是你正在使用的完整代码,因为'fmt.Println(resp.Body)'不会打印任何有用的东西。 – JimB

+0

我收到来自resp错误,err:= client.Do(req),所以身体是零 – Vivi

+0

与curl我可以做的请求,问题是转到代码 – Vivi

回答

0

如果我将它用于类似https://example.com这样的URL,您的代码将起作用。你确定你传递了正确的URL吗?

package main 

import (
    "fmt" 
    "io/ioutil" 
    "net/http" 
) 

func main() { 
    url := "https://example.com" 
    req, err := http.NewRequest("GET", url, nil) 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 

    client := &http.Client{} 
    resp, err := client.Do(req) 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 

    fmt.Println("OK") 
    defer resp.Body.Close() 

    bytes, err := ioutil.ReadAll(resp.Body) 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 

    str := string(bytes[:]) 
    fmt.Printf("%s", str) 
} 
相关问题