Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Acceda a los datos desde post API

Hola a todos

Necesito acceder a los datos desde la API POST proporcionada por el cliente.

Tengo la información proporcionada por el cliente:

Verbo: POST

DEV Endpoint: https://clientwebsitename.azurewebsites.net/dev/masterdata/departments/get

Encabezado requerido: X-Token (pasar el JWT del usuario)

JSON devuelto tiene un elemento denominado uiList que contiene una lista de todos los departamentos permitidos.

¿Puede alguien por favor ayudar a cómo acceder a los datos de esta API proporcionada, he intentado la mayoría, pero devuelve un error 404.

Gracias

  • Anonymous's avatar
    Anonymous
    6 years ago

    HI @atul-patil,

    >>DataSource.Error: los datos descargados son HTML, que no es el tipo esperado. La dirección URL puede ser incorrecta o es posible que no haya proporcionado las credenciales correctas al servidor.

    Tal vez este problema aparece cuando intenta utilizar el conector incorrecto para reconocer los datos de respuesta.
    Me gustaría sugerirle la navegación al paso "Origen" para confirmar el tipo de resultado y cambiar al conector correspondiente en los pasos siguientes para reconocer/análisis de registros.

    saludos

    Xiaoxin Sheng

15 Replies

  • Su solicitud está incompleta. POST requiere una carga en el cuerpo de la solicitud.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @lbendlin,

      Gracias por la respuesta.

      Sí tengo otro enlace, así como la carga útil contiene el nombre de usuario y la contraseña para acceder a los datos desde el enlace dado

      Gracias

      • lbendlin's avatar
        lbendlin
        Icon for Super User rankSuper User

        Este es un ejemplo. Utilice Json.FromValue para codificar en binario la carga útil

        Dejar
        URL : "http://xxx/tstat",
        encabezados de encabezados de la dirección de encabezados ['Content-Type'"'application/json"],
        data á Json.FromValue([tmode ? 2,t_cool - Setpoint,hold - 0]),
        Web - Web.Contents(URL, [ Contenido - datos, Encabezados - encabezados, ManualStatusHandling ? 404, 400o]),
        resultado: Json.Document(web)

        En

        Resultado

  • Anonymous's avatar
    Anonymous
    Not applicable

    HI @atul-patil,

    Puede echar un vistazo al siguiente vínculo sobre el uso de un conector web para obtener datos de la API de la resto con autorizaciones:

    Extraer datos de una autenticación de API REST

    Código de ejemplo:

     let
    	 token = 'your token',
    	 body= 'request body',
    	 url = "https://clientwebsitename.azurewebsites.net/",
    	 Source = Web.Contents(url,
    		 [
    			 Headers = [#"X-Token"=token],
    			 RelativePath="dev/masterdata/departments/get",
    			 Content = Text.ToBinary(body) 
    		 ]
    	 )
     in
    	Source

    saludos

    Xiaoxin Sheng

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @v-shex-msft,

      Gracias por la respuesta, he probado el código que ha proporcionado, pero da el siguiente error-

      Expression.Error: el encabezado 'X-Token' solo se admite cuando se conecta de forma anónima. Estos encabezados se pueden utilizar con todos los tipos de autenticación: Accept, Accept-Charset, Accept-Encoding, Accept-Language, Cache-Control, Content-Type, If-Modified-Since, Prefer, Range, Referer.

      He probado en el cartero y funciona, qué proceso he utilizado en el cartero como abajo-

      1. Tengo URL para obtener Token: (jwt)

      URL: https://Clientwebsite.azurewebsites.net/dev/auth/user/authenticate

      aquí he proporcionado la carga útil, así

      2. Luego otra URL para obtener los Datos

      URL: https://Clientwebsite.azurewebsites.net/dev/masterdata/departments/get

      aquí he proporcionado Kayname (X-Token) y jwd Token (generado desde el 1er paso).

      Por favor, ayúdame a recuperar los datos.

      Gracias

      • Anonymous's avatar
        Anonymous
        Not applicable

        Hola @atul-patil,

        Parece que necesita agregar el primer estreptococo en la tabla de consulta para obtener el token de acceso y usar en los pasos siguientes, intento modificar la fórmula para agregar el primer paso a la fórmula:

         let
        	url = "https://clientwebsitename.azurewebsites.net/",
        	// Uses the Twitter POST oauth2/token method to obtain a bearer token
        	GetJson = Web.Contents(url,
        		[
        			Headers = [#"Authorization"=authKey, #"Content-Type"="application/json"],//use the sent parameters and name as you do in postman to replace current Authorization			 
        			RelativePath="dev/auth/user/authenticate"
        		]
        	),
        	token = Json.Document(GetJson)['token name'],//use tokne name to repalce 'tokne name' part to extract the responsed token
        	Source = Web.Contents(url,
        		 [
        			 Headers = [#"X-Token"=token, #"Content-Type"="application/json"],
        			 RelativePath="dev/masterdata/departments/get"
        		 ]
        	 ),
        	Result=Json.Document(Source)
         in
        	Result

        Por cierto, ¿cómo publicó las autorizaciones en sus solicitudes? ¿En el encabezado, cuerpo o concatenar en cadena de consulta? Mi fórmula es add authorized en los encabezados y puede que no sea adecuada para todos los escenarios.

        Blog de BI de Chris Webb
        saludos

        XIaoxin Sheng