2017-10-10 3 views
-3

Ich versuche, eine Anfrage in GO zu tun, aber ich bekomme immer "Connection Reset by Peer" -Fehler. Der folgende Code zeigt, wie ich die Anfrage so mache:Verbindung zurückgesetzt durch Peer 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) 

... und ich erhalten:

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

Wenn ich https://example.com kein Einrollen erhalte ich Antwort auf den Server bilden. Warum kann ich die Anfrage nicht in GO machen?

+2

Der Server schließt Ihre Verbindung. Kontrollieren Sie den Endpunkt und können Sie dort die Protokolle überprüfen? Ist das wirklich der vollständige Code, den Sie verwenden, weil 'fmt.Println (resp.Body)' nichts nützliches druckt. – JimB

+0

Ich erhalte einen Fehler von resp, err: = client.Do (req) so der Körper ist null – Vivi

+0

Mit curl kann ich die Anfrage, das Problem ist der Go-Code – Vivi

Antwort

0

Ihr Code funktioniert, wenn ich ihn gegen eine URL wie https://example.com verwende. Sind Sie sicher, dass Sie die URL richtig eingegeben haben?

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