http - 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"}
解决方案
有了用户名和密码,您就可以使用 HTTP Basic Auth。
peticion.SetBasicAuth("user1", "passwd1!")
使用基本身份验证要记住的是您的凭据未加密。如果您将它们添加到您的代码中,它们将在那里供未来的开发人员查看。如果您需要保护它们,您将需要对程序或类似的东西进行输入,以便它们不只是坐在代码中。
推荐阅读
- jquery - 如何在生产阶段动态获取文件路径?
- excel - 如何在excel公式的Countif中使用年份函数?
- javascript - 如何将传单绑定到 JavaScript 中的坐标列表
- bash - 将数组改造成两个新的 var
- c++ - 如何在 Arduino 中使用 C++ 成员函数作为中断处理程序?
- php - 如何在JS中获取数组输入文本的最后一个值?
- python - 我有几个 Linux 命令,我想在 Windows 机器上运行。如何在 Windows 上从 Python 运行 Linux 命令
- reactjs - Docker-compose - node_modules 未在主机上填充
- java - Java中的线程安全访问枚举
- wordpress - 如何使用 wp 火箭缓存插件停止缓存特定 div?