Senden von POST-Requests in Golang mit header

Erstelle ich mir ein Formular wie dieses:

form := url.Values{}
form.Add("region", "San Francisco")
if len(params) > 0 { 
    for i := 0; i < len(params); i += 2 { 
        form.Add(params[i], params[i+1])
    }
    testLog.Infof("form %v", form)

Nun, wenn ich

resp, err = http.PostForm(address+r.Path, form)

dann funktioniert alles einwandfrei, ich bekomme wieder eine Antwort mit einer erwarteten cookie.

Allerdings würde ich gerne einen header hinzufügen, in dem Fall kann ich nicht verwenden PostForm daher habe ich meine POST request manuell wie:

req, err := http.NewRequest("POST", address+r.Path, strings.NewReader(form.Encode()))

Dann Stell ich Sachen an den Kopf-und senden Sie die Anfrage

req.Header.Add("region", "San Francisco") 
resp, err = http.DefaultClient.Do(req)

Aber die form ist nicht erhalten und meine Antwort enthält keine Cookies.

Wenn ich drucken Sie die req, es sieht aus wie die form ist nil:

&{POST http://localhost:8081/login HTTP/1.1 1 1 map[Region:[San Francisco]] {0xc420553600} 78 [] false localhost:8081 map[] map[] <nil> map[]   <nil> <nil> <nil> <nil>}
Dies ist eine Webseite, die die Buchung der form, richtig? Sie sind gonna haben zu verwenden JS für diese, wenn das der Fall ist. Wenn Sie arbeiten mit der Vorlage, Gehen Sie den code nicht posten nichts, es ist einfach der Generierung der html ein input-element vom Typ submit. Die Anfrage auf der anderen Seite auch nicht im browser ausgeführt werden, es muss auf dem system laufen. Also, wenn Sie ein html-Formular mit submit einen BEITRAG an ein Go-back-end und Sie möchten, fügen Sie Kopfzeilen, die Sie verwenden müssen, eine XMLHttpRequest in JavaScript zu erreichen, dass.
Nein, keine Webseite, das ist ein Go-unit-test. Siehe Antwort unten, setzen den content-type im header behoben mein problem.

InformationsquelleAutor Jana | 2016-10-12

Schreibe einen Kommentar