Como realizar um POST com Basic Auth em Golang(GO)

Bibliotecas utilizadas:

import “fmt”
import “net/http”
import “net/url”
import “io/ioutil”
import “strings”

Neste exemplo utilizaremos em um dos dados a serem enviados o conteúdo de um arquivo texto armazenado na máquina local, para carregar o arquivo basta utilizar a função ReadFile da estrutura ioutil.

dat, _ := ioutil.ReadFile("C:\\Go\\src\\DemoEdoc\\teste.tx2")

Construindo form com os parametros e valores a serem enviados:

form := url.Values{}

form.Add(“grupo”, “edoc”)
form.Add(“cnpj”, “08187168000160”)
form.Add(“arquivo”, string(dat))

Montando requisição a partir da estrutura http(net/http), onde o primeiro parâmetro será o método de comunicação utilizado, o segundo a url onde será disparada a requisição e o terceiro os dados a serem enviados, neste caso iremos utilizar o form que montamos acima, mas para que este seja devidamente interpretado precisamos realizar um encode.

req, _ := http.NewRequest("POST", "http://192.168.2.154:8081/ManagerAPIWeb/nfce/envia",

strings.NewReader(form.Encode()))

Definindo Basic Auth:

req.SetBasicAuth("admin", "123mudar")

cli := &http.Client{}

Enviando requisição e tratando retorno:

resp, _ := cli.Do(req)

//Trata o retorno
fmt.Println(“Status:”, resp.Status)
fmt.Println(“Cabeçalho:”, resp.Header)
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(“Mensagem:”, string(body))

https://tsdn.tecnospeed.com.br/files/render/a/2EChTyumdxo/m/2Aal0HUq8WfZF7JiUAWJjZFgzpCcBJMPXiExoJvdkCXkaofD_cmNS1s3R9IymjXknRCaqa9NGSw