Как отправить запрос Post с помощью Excel Power Query - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь получить данные из API Betfair, и мне нужно отправить дополнительную информацию в виде заголовков и данных Json.Подробности ниже:

URL:

https://api.betfair.com/exchange/account/json-rpc/v1

Заголовки:

{ 'X-Application' :'exampleappid', 'X-Authentication' :'examplesessionkey','Content-Type':'application/json' }

форматы данных:

{"jsonrpc": "2.0","method": "AccountAPING/v1.0/getAccountStatement", "params": {"itemDateRange":{},"includeItem":"ALL"}, "id": 1}

В настоящее время в Excel я перехожу на вкладку «Данные», затем нажимаю Новый запрос> Из других источников> Из Интернета> Дополнительно , затем набираю URL и заголовки всоответствующие поля.Куда мне поместить другие данные формы, или это просто невозможно?

Редактировать:

Я создал следующий запрос в редакторе запросов:

let
    formdata = "{""jsonrpc"": ""2.0"",""method"": ""AccountAPING/v1.0/getAccountStatement"", ""params"": {""itemDateRange"":{},""includeItem"":""ALL""}, ""id"": 1}" ,

    Source = Web.Contents("https://api.betfair.com/exchange/account/json-rpc/v1",[Headers= [#"X-Application"="appkey", #"X-Authentication"="sessionkey", #"Content-Type"="application/json"],
Content=Text.ToBinary(formdata)])


in
    Source

и я получаю следующую ошибку DataSource.Error: The server committed a protocol violation. Section=ResponseHeader Detail=Header name is invalid Details: https://api.betfair.com/exchange/account/json-rpc/v1

1 Ответ

0 голосов
/ 23 сентября 2019

К сожалению, я не думаю, что в пользовательском интерфейсе есть поле для веб-соединений для установки данных формы, но это можно сделать, установив соединение вручную.Я думаю, что то, что у вас есть без формданных, выглядело бы так в М-коде

Web.Contents(
    "https://api.betfair.com/exchange/account/json-rpc/v1", 
    [Headers=[#"X-Application"="exampleappid", #"X-Authenticaion"="examplesessionkey", #"Content-Type"="application/json"]]
    )

. Есть поле «Содержимое», которое можно добавить после заголовков.В большинстве примеров, которые я видел (и я помню, как делал это один раз, хотя я не помню, зачем), вы устанавливаете строку для данных формы и используете Text.ToBinary перед передачей ее в поле Content.Таким образом, полный запрос будет выглядеть примерно так:

let
formdata = "{""jsonrpc"": ""2.0"",""method"": ""AccountAPING/v1.0/getAccountStatement"", ""params"": {""itemDateRange"":{},""includeItem"":""ALL""}, ""id"": 1}" ,
Source = 
Web.Contents(
    "https://api.betfair.com/exchange/account/json-rpc/v1", 
    [
    Headers=[#"X-Application"="exampleappid", #"X-Authenticaion"="examplesessionkey", #"Content-Type"="application/json"],
    Content = Text.ToBinary(formdata)
    ]
    )

in
    Source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...