El valor especificado tiene caracteres de encabezado HTTP no válidos

Un usuario Pregunto ✅

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

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 Smiley feliz

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *