gcyr
Hola,
Intento conectarme a una API segura usando un token y recibí el siguiente error:
Expression.Error: el valor especificado tiene caracteres de encabezado HTTP no válidos.
Nombre del parámetro: nombre
Detalles:
Aquí está mi consulta:
dejar
apiUrl = «
opciones = [Headers =[#» token «= «<Token>»], Consulta =[#» SQLQuery «=» <SqlQuery> «]],
resultado = Web.Contents (apiUrl, opciones)
en
resultado
Los caracteres de mi Token son alfanuméricos.
¿Cómo resuelvo este error?
¡Gracias!
gcyr
En respuesta a v-jiascu-msft
Hola @ v-jiascu-msft
Encontré una solución a mi problema.
Hubo un par de problemas:
Mi código debería haber sido
let
apiUrl = " <APIURL>",
SqlQuery = " <SQL Query> "
options = [Headers =[Token="<Token>", #"Content-Type" = "application/json"], Content = Text.ToBinary(SqlQuery)],
result = Web.Contents(apiUrl , options)
in
result
El Token no debería haber estado en «». No sé por qué HTTP no reconoció este encabezado.
La API solo acepta el método POST, por lo que mi SQLQuery debería haberse enviado como Contenido.
También tuve que especificar el tipo de contenido.
Gracias,
Guillaume
v-jiascu-msft
Hola @gcyr,
El mensaje de error decía que había algo mal con los nombres de los parámetros. Busqué en esta web y encontré que # «token» no es una opción de encabezado válida. Quizás puedas probar esto:
let apiUrl = "<ApiUrl>", options = [Headers =[Authorization= "<Token>"], Query=[#" SQLQuery "=" <SqlQuery> "]], result = Web.Contents(apiUrl , options) in result
O puedes probarlo en este formato.
let authKey = "Bearer token", url = "https://api.powerbi.com/......", GetJson = Web.Contents(url, [ Headers = [#"Authorization"=authKey, #"Content-Type"="application/x-www-form-urlencoded;charset=UTF-8"] ] ), content = Json.Document(GetJson), value = content[value], #"Converted to Table" = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id", "name", "addRowsAPIEnabled"}, {"Column1.id", "Column1.name", "Column1.addRowsAPIEnabled"}) in #"Expanded Column1"
¡Atentamente!
Valle
gcyr
En respuesta a v-jiascu-msft
Hola @ v-jiascu-msft
Encontré una solución a mi problema.
Hubo un par de problemas:
Mi código debería haber sido
let
apiUrl = " <APIURL>",
SqlQuery = " <SQL Query> "
options = [Headers =[Token="<Token>", #"Content-Type" = "application/json"], Content = Text.ToBinary(SqlQuery)],
result = Web.Contents(apiUrl , options)
in
result
El Token no debería haber estado en «». No sé por qué HTTP no reconoció este encabezado.
La API solo acepta el método POST, por lo que mi SQLQuery debería haberse enviado como Contenido.
También tuve que especificar el tipo de contenido.
Gracias,
Guillaume
Kieran
En respuesta a gcyr
Extremadamente útil eres una estrella