Пост-метод в Power BI

Я написал Power query для отправки метода, как показано ниже.

  let
    url = "https://XXXXXXXXXX/OAuth/Token",
    body = "{
              ""grant_type"": ""password"",
              ""client_id"": ""XXXXXXXX"",
              ""client_secret"": ""XXXXXXXXX"",
              ""redirect_uri"": ""https://XXXXXXX/home/"",
              ""username"": ""user"",
              ""password"": ""password""

    }",
   Source  = Json.Document(Web.Contents(url,
   [ 
     Headers = [#"Content-Type"="application/x-www-form-urlencoded"],
     Content=Text.ToBinary(body)
   ]
   )
   ),
    #"Converted to Table" = Record.ToTable(Source)
in
   #"Converted to Table"

Но я получаю 400 ошибок неверного запроса, например

DataSource.Error: Web.Contents failed to get contents from 'https://XXXXX/OAuth/Token' (400): Bad Request
Details:
    DataSourceKind=Web
    DataSourcePath=https://XXXXXXX/OAuth/Token
    Url=https://XXXXXXXXXX/OAuth/Token

Когда я пытался использовать почтальона, я получаю статус 200 Ok. В чем основная ошибка в моем коде PQL?


person Mahen    schedule 22.05.2018    source источник
comment
Я нашел причину: мой клиент не принимает тело в двоичном формате. Поэтому предложите лучший код для этого: Content=Text.ToBinary(body)   -  person Mahen    schedule 22.05.2018


Ответы (1)


Вы должны отправить тело в виде строк с URL-адресом, объединенных амперсандом вместо JSON.

Итак, тело должно выглядеть так

body="grant_type=password&client_id=XXXXXXXX&client_secret=XXXXXXXXX&redirect_uri=https%3A%2F%2FXXXXXXX%2Fhome%2F&username=user&password=password"

Посмотрите на это - https://stackoverflow.com/questions/50151940/power-query-make-http-post-request-with-form-data/50356349#50356349

person Sergey Lossev    schedule 23.05.2018