2017-10-10 110 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) 
} 
相關問題