mrgou
Basándome en la útil respuesta que recibí aquí, creé este fragmento de código como una prueba para autenticar y extraer datos de una API REST, y lo pegué en el Editor avanzado de una consulta en blanco.
La API requiere autenticación de nombre de usuario y contraseña a través de una solicitud POST (no GET), con el nombre de usuario y la contraseña pasados como parámetros de consulta (no en los encabezados), y luego devuelve un ID de sesión. Puedo ejecutar esta consulta de autenticación HTTP con éxito en Postman:
let
rooturl = "https://rooturl.com/",
//credentials
username = "myusername",
password = "mypassword",
relativeURL =
"api/v20.3/auth",
//connect to server
GetJson =
WebAction.Request(
"POST",
rooturl,
[
Headers = [
#"Content-Type" = "application/json"
],
Query = [
#"username" = username,
#"password" = password
],
RelativePath = relativeURL
]
),
//'session Id' for advanced operation
sessionId = Json.Document(GetJson)[sessionId],
Source =
Web.Contents(
(omitting for brevity)
)
in
Source
Desafortunadamente, el paso WebAction.Request desencadena el siguiente error: Expression.Error: No se nos ha dado permiso para realizar acciones contra este recurso.
Simplemente no entiendo lo que esto significa, e incluso si se envió la solicitud HTTP. Encontré una pregunta similar aquí, pero realmente no entiendo la solución propuesta y cómo se aplicaría a mi caso.
¡Gracias de antemano por tu ayuda!
yingyinr
Hola @mrgou,
Revise el contenido en el siguiente enlace, espero que pueda ayudarlo a resolver el problema.
Atentamente
mrgou
¡Si, gracias! Pasando un cuerpo vacío en una función Web.Content (Contenido = Text.ToBinary («»)) Hizo el truco. Curiosamente, eso parece implicar que Web.Actions realmente no funciona, aunque …
yingyinr
Hola @mrgou,
Revise el contenido en el siguiente enlace, espero que pueda ayudarlo a resolver el problema.
Atentamente