GO: HTTP Client POST Form data (x-www-form-urlencoded)

Form Daten per POST senden, Rückgabe ist JSON. Beispiel ist von einer Keycloak Implementierung um einen JWT anzufordern.

package main

import (
        "net/http"
        "net/url"
        "encoding/json"
        "fmt"
        "log"
)


func main () {
        username := "test"
        password := "password"
        auth_url := "https://localhost:9443"
        realm := "test_realm"

        // Get JWT Token
	form := url.Values{}
	form.Add("grant_type", "password")
	form.Add("username", username)
	form.Add("password", password)
	form.Add("client_id", "auth")

	hc := http.Client{}
	url := fmt.Sprintf("%v/auth/realms/%v/protocol/openid-connect/token", auth_url, realm)
	req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
	req.PostForm = form
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	resp, err := hc.Do(req)

	var res map[string]interface{}

	json.NewDecoder(resp.Body).Decode(&res)

	token, exists := res["access_token"]

	if exists == false {
		log.Fatalln("No token")
	}
}

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.