Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Problema de API web en Power BI Desktop

Hola a todos

Tengo un problema con la consulta avanzada web de Power BI: puedo hacer que la API se autentique y obtenga datos de la mayoría de las consultas, pero la consulta a continuación requiere como SericeRequest y no sé cómo agregar esto a PowerBI: el código a continuación es de postman (en rojo está la solicitud de servicio de postman - Enumerada tanto cURL como HTTP)

Solicitud cURL
--header 'Content-Type: text/xml' \
--header 'X-Requested-With: QualysPostman' \
--header 'Autorización: xxxxxxxxx' \
--data '<SolicitudServicio>
<filtros>
<Criteria field="tagName" operator="EQUALS">Cloud Agent</Criteria>
</filtros>
</Solicitud de Servicio> '
Solicitud HTTP
POST /qps/rest/2.0/search/am/hostasset HTTP/1.1
Anfitrión: qualysapi.qualys.eu
Tipo de contenido: texto/xml
X-Solicitado-Con: QualysPostman
Autorización: xxxxxxxxxxxx
Longitud del contenido: 127
<Solicitud de servicio>
<filtros>
<Criteria field="tagName" operator="EQUALS">Cloud Agent</Criteria>
</filtros>
</Solicitud de Servicio>

Cualquier ayuda será apreciada gracias

6 Replies

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias Ibendlin

      La consulta Web.Contents funciona (ver más abajo), el problema es cómo puedo incluir la solicitud de servicio roja (Postman) en la consulta.

      <Solicitud de servicio>
      <filtros>
      <Criteria field="tagName" operator="EQUALS">Cloud Agent</Criteria>
      </filtros>
      </Solicitud de Servicio>

      Consulta avanzada de Power BI

      dejar
      Source = Xml.Tables(Web.Contents("https://qualysapi.qualys.eu" & "/msp/user_list.php", [Headers=[Authorization="xxxxxxxx", #"X-Requested-With"="PowerBI"]])),
      Tabla0 = fuente{0}[Tabla],
      Tabla1 = Tabla0{0}[Tabla],
      #"Tipo cambiado" = Table.TransformColumnTypes(Table1,{{"USER_LOGIN", escriba texto}, {"USER_ID", Int64.Type}, {"EXTERNAL_ID", escriba texto}, {"USER_STATUS", escriba texto}, {"CREATION_DATE", escriba fechahora}, {"LAST_LOGIN_DATE", escriba texto}, {"USER_ROLE", escriba texto}, {"BUSINESS_UNIT", escriba texto}, {"UNIT_MANAGER_POC", Int64.Type}, {"MANAGER_POC", Int64.Type}, {"UI_INTERFACE_STYLE", escriba texto}}),
      #"CONTACT_INFO expandido" = Table.ExpandTableColumn(#"Tipo cambiado", "CONTACT_INFO", {"NOMBRE", "APELLIDO", "TÍTULO", "TELÉFONO", "FAX", "CORREO ELECTRÓNICO", "EMPRESA", "ADDRESS1", "ADDRESS2", "CIUDAD", "PAÍS", "ESTADO", "ZIP_CODE", "TIME_ZONE_CODE"}, {"CONTACT_INFO. NOMBRE", "CONTACT_INFO. APELLIDO", "CONTACT_INFO. TÍTULO", "CONTACT_INFO. TELÉFONO", "CONTACT_INFO. FAX", "CONTACT_INFO. CORREO ELECTRÓNICO", "CONTACT_INFO. EMPRESA", "CONTACT_INFO. ADDRESS1", "CONTACT_INFO. ADDRESS2", "CONTACT_INFO. CIUDAD", "CONTACT_INFO. PAÍS", "CONTACT_INFO. ESTADO", "CONTACT_INFO.ZIP_CÓDIGO", "CONTACT_INFO. TIME_ZONE_CODE"})
      en
      #"CONTACT_INFO ampliado"

  • Hola, @markvanwyk

    Quizás pueda crear la siguiente consulta, crear una consulta en blanco en PowerQuery e ir al Editor avanzado

    let
        url = "https://qualysapi.qualys.eu/qps/rest/2.0/search/am/hostasset",
        headers = [
            #"Content-Type" = "text/xml",
            #"X-Requested-With" = "QualysPostman",
            #"Authorization" = "xxxxxxxxx"
        ],
        body = "<ServiceRequest>
                    <filters>
                        <Criteria field=\"tagName\" operator=\"EQUALS\">Cloud Agent</Criteria>
                    </filters>
                </ServiceRequest>",
        Source = Web.Contents(url, [
            Headers = headers,
            Content = Text.ToBinary(body)
        ]),
        Response = Xml.Tables(Source)
    in
        Response
    

    Cómo obtener respuestas rápidas a tu pregunta

    Saludos

    Yongkang Hua

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