Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Power BI > obtener datos > API web > editor avanzado > código M para controlar los redireccionamientos HTTP 302

Tenemos una fuente de datos de API web que vive detrás de una implementación de cloudfare donde están involucradas las redirecciones http 302.

El uso de Power BI Desktop > obtener datos > web [ api ] > escribir los detalles de la dirección URL y el valor inicial del encabezado de autorización genera un acceso denegado. Esto se debe a que la documentación de la API de servicios apunta a una API web que emite redireccionamientos 302. Si ponemos el valor de la url de redireccionamiento las cosas funcionan bien. El problema es que es una solución frágil y, en cambio, nos gustaría admitir el seguimiento de las redirecciones 302.

Tenemos el siguiente código en su lugar que en la línea "Response = Json.Document(InitialRequest)", genera el error "Expression.Error: '302' no es compatible con la opción ManualStatusHandling".

¿No debería ser compatible con 302 y, si no, con alguna información sobre cómo creamos correctamente el código M de la fuente de datos de la API web para seguir una redirección?


let
    // initial request to get the redirect url
    InitialRequest = Web.Contents("https://my.securityjourney.com/api/v3/public-reporting/users", [ManualStatusHandling={302}]),
    //RedirectUrl = Text.FromBinary(InitialRequest[Headers][Location]), // Expression.Error: We cannot apply field access to the type Binary.
    Response = Json.Document(InitialRequest), // Expression.Error: '302' is not supported by the ManualStatusHandling option.
    RedirectUrl = Response[Headers][Location],

    // follow the redirect url to get the actual data
    FinalRequest = Web.Contents(RedirectUrl),
    Source = Json.Document(FinalRequest),

    #"Converted to Table" = Table.FromRecords({Source}),
    #"Expanded users" = Table.ExpandListColumn(#"Converted to Table", "users"),
    #"Expanded users1" = Table.ExpandRecordColumn(#"Expanded users", "users", {"email", "firstName", "lastName", "totalPoints", "securityChampion", "timeSpent"}, {"users.email", "users.firstName", "users.lastName", "users.totalPoints", "users.securityChampion", "users.timeSpent"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded users1",{{"users.email", type text}, {"users.firstName", type text}, {"users.lastName", type text}, {"users.totalPoints", Int64.Type}, {"users.securityChampion", type logical}, {"users.timeSpent", type text}})
in
    #"Changed Type"

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @myusrn ,

La función Web.Contents de Power Query tiene algunas funciones integradas para tratar con códigos de estado HTTP, incluidos los redireccionamientos 302. Sin embargo, parece que la opción ManualStatusHandling no es compatible con 3021.

Para manejar los redireccionamientos 302, puede probar el siguiente enfoque:

  1. Solicitud inicial: Realice la solicitud inicial y maneje el estado 302 manualmente.
  2. Extraer URL de redireccionamiento: Extrae la URL de redireccionamiento del encabezado Ubicación.
  3. Seguir redireccionamiento: realice una nueva solicitud a la URL de redireccionamiento.

Publicación similar: Redireccionamiento de conector web - Comunidad de Microsoft Fabric

Resuelto: Power Query Data de la redirección web con cookies (E... - Comunidad de Microsoft Fabric

Referencia: Control de códigos de estado con Web.Contents para conectores de Power Query - Power Query | Microso...

Saludos

Esteban Tao

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Gracias por la respuesta y las sugerencias. Como puede ver en el código m de Power BI que compartí anteriormente, estoy realizando los pasos 1 a 3 que menciona anteriormente. El problema es que cuando llego al paso 2 dice que el paso 1 usa ". . . No se admite el parámetro ManualStatusHandling={302}])". ¿Tiene ideas sobre de qué otra manera "manejaría el estado 302 manualmente" que sea compatible?

Helpful resources

Announcements
Sept PBI Carousel

Power BI Monthly Update - September 2024

Check out the September 2024 Power BI update to learn about new features.

September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

Sept NL Carousel

Fabric Community Update - September 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors