Страницы: 1
RSS
Формирование POST запроса в Power Query по аналогии с VBA
 
Коллеги, здравствуйте.
Помогите, пожалуйста, решить проблему получения данных с сервера. Методом проб и ошибок нашёл работающее решение на VBA:
Код
Sub zapros_mtr()
Dim xmlhttp As New MSXML2.XMLHTTP60, myurl As String, msg As String
myurl = "https://site.com";
msg = "ARNum=22304901394"
xmlhttp.Open "POST", myurl, False
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send msg
otvet = xmlhttp.responseText
Cells(2, 1) = otvet
End Sub

Хотелось бы получить то же самое в power query. Попробовал кучу разных вариантов, которые в принципе сводятся приблизительно к одному и тому же, но ни один пока не сработал. Вот вариант запроса в PQ. По логике должен работать, но не работает.

let
url = "https://site.com",
body  = "{""ARNum"": ""22304901394""}",
Parsed_JSON = Json.Document(body),
BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
tb=Text.ToBinary(BuildQueryString),
cont=Web.Contents(url,[  
       Headers = [
           #"Content-Type"="application/x-www-form-urlencoded"
       ],
       Content = Text.ToBinary(BuildQueryString)
]),

jcont=Json.Document(cont),
response=Table.FromRecords(jcont)
in
response
Изменено: Ezoptron - 16.09.2022 15:10:42
 
А с чего вы в ответ именно json ожидаете? Там xml прилетает.
Код
let
    url = "https://site.com",
    body  = "{""ARNum"": ""22304901394""}",
    Parsed_JSON = Json.Document(body),
    tb=Json.FromValue(Parsed_JSON),
    cont=Web.Contents(url,[  
        Headers = [
            #"Content-Type"="application/x-www-form-urlencoded"
        ],
        Content = tb
    ]),

    jcont=Text.FromBinary(cont),
    xml = Xml.Tables(jcont)
in
    xml

А вообще здесь подробнейшее руководство, как работать с API.
Изменено: PooHkrd - 17.09.2022 00:28:06
Вот горшок пустой, он предмет простой...
 
PooHkrd, хоть я и не ТС, спасибо за видео, отличный подробный разбор.
 
PooHkrd, к сожалению ваш запрос тоже не сработал. За видео большое спасибо.
 
Ezoptron, ну ХЗ, у меня по этой схеме все api подключаются только в путь. Вообще никаких сбоев.
Вот горшок пустой, он предмет простой...
 
PooHkrd, может, конечно, проблема на стороне самого апи.
И ещё такой момент. При запросе в VBA если использовать библиотеку MSXML2.XMLHTTP60, то всё работает, ответ от сервера приходит в json, а если делать запрос через WinHttpRequest, то эксель виснет наглухо.
В PQ почему-то ничего не работает, может там можно ещё где-то что-то прописать в настройках?
Страницы: 1
Наверх