首页 > 解决方案 > golang中获取方法

问题描述

我必须为大学做一份工作,事实是我无法执行它,我需要通过 GET 从 API 请求数据,问题是 API 要求我登录以使用所述数据,怎么能我从 GO 执行此身份验证?,请帮助 :(

clienteHttp := &http.Client{}
url := "https://web.copiloto.ai/api/rawdata?vehicles=238&from=2021-05-20T00:00:00&to=2021-05-20T23:59:59&fields=$basic,ecu_bms1_total_voltage&distance=km"
peticion, err := http.NewRequest("GET", url, nil)
if err != nil {
    log.Fatalf("Error creando petición: %v", err)

}

peticion.Header.Add("Content-Type", "application/json")
peticion.Header.Add("X-Hola-Mundo", "Ejemplo")
respuesta, err := clienteHttp.Do(peticion)
if err != nil {
    
    log.Fatalf("Error haciendo petición: %v", err)
}

defer respuesta.Body.Close()

cuerpoRespuesta, err := ioutil.ReadAll(respuesta.Body)
if err != nil {
    log.Fatalf("Error leyendo respuesta: %v", err)
}

respuestaString := string(cuerpoRespuesta)
log.Printf("Código de respuesta: %d", respuesta.StatusCode)
log.Printf("Encabezados: '%q'", respuesta.Header)
contentType := respuesta.Header.Get("Content-Type")
log.Printf("El tipo de contenido: '%s'", contentType)
log.Printf("Cuerpo de respuesta del servidor: '%s'", respuestaString)

回复:

2021/05/25 18:12:26 Cuerpo de respuesta del servidor: '{"message": "User is NOT Logged in | Authenticated"}

目前我只知道从浏览器消费数据必须登录到页面,这样才能获取数据,但浏览器之外什么都没有

升级:要登录我必须通过POST方法发送用户名和密码,我有用户名和密码,我该怎么办?在邮递员中进行测试时,我收到以下信息

{
"message": "User successfully authenticated",
"app": null,
"auth": "4fe0e1733199bdaf1f7106aeea7754e6389ef1b7fa19e24a4"}

标签: httpgo

解决方案


有了用户名和密码,您就可以使用 HTTP Basic Auth。

peticion.SetBasicAuth("user1", "passwd1!")

使用基本身份验证要记住的是您的凭据未加密。如果您将它们添加到您的代码中,它们将在那里供未来的开发人员查看。如果您需要保护它们,您将需要对程序或类似的东西进行输入,以便它们不只是坐在代码中。

供参考:https ://golang.org/pkg/net/http/#Request.SetBasicAuth


推荐阅读