none
Забрать JSON с сайта. RRS feed

  • Вопрос

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

    Invoke-WebRequest -Uri $SITE  -Method post -ContentType "application/json"

    Правильно ли я понимаю, для того чтобы забрать JSON файл сайта, мне нужно в команду, добавить запрос,
    ну например , который будет выбирать JSON. 

    $zapros=@"{"startDate":"2019.01.20","endDate":"2019.03.20","idUser":"77777", }"@Invoke-WebRequest -Uri $SITE  -Method post -ContentType "application/json" -body  $zapros

    Мне кажется, что я что то путаю. Как дать команде понять, что мне нужно закачать файл JSON? Может кто направит? Спасибо!

    26 марта 2019 г. 9:49

Ответы

Все ответы

  • Все, спасибо! Разобрался. Просто обращался по неправильному адресу за JSON.
    26 марта 2019 г. 11:29
  • Так, друзья я немного поспешил, получилось  снять XML, а вот именно JSON не получается, может кто то проходил через это? Спасибо!
    26 марта 2019 г. 14:20
  • Вы уверены что сайт умеет возвращать JSON?

    Если это чей то сайт то спросите владельца.

    Если это ваш сайт то проверьте и измените его код.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    26 марта 2019 г. 15:42
    Модератор
  • Спасибо! То есть не любой сайт может содержать JSON получается?

    Спасибо!

    27 марта 2019 г. 5:55
  • Спасибо! То есть не любой сайт может содержать JSON получается?

    Спасибо!

    Конечно нет. Возвращать/принимать данные в конкретном формате могут только те сайты где этот функционал намеренно добавлен. И обычно JSON не "содержится" на сайте, а создается специальным веб сервисом. Например, данные часто поступют из базы данных после чего преобразуются в конкретный формат (например JSON) и возвращаются в виде контента.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    27 марта 2019 г. 6:16
    Модератор
  • Можно еще задать вопрос. Просто не хочу плодить темы.

    Так вот я могу вытащить XML своего кабинета, но для того чтобы зайти в свой кабинет мне нужно аутентифицироваться. Так вот не совсем понимаю , как я могу сделать эту задачу в один присест через скрипт.

    Так вот у меня получается залогиниться

    Invoke-WebRequest -Uri "https://portal.ru/CookieAuth.dll?Logon?curl=Z2F&flags=0&forcedownlevel=0&formdir=3&trusted=0&username=USER&password=PASSWORD

    После нужно перейти по определенной ссылке и уже из нее скачать XML

    Invoke-WebRequest -Uri "https://portal.ru/data/base" -OutFile C:\PORTAL\data.xml 
    Не могу подумать как это сделать в один присест залогиниться искачать XML.

    27 марта 2019 г. 13:46
  • Я тоже не знаю, это зависит от сайта. Спрашивайте хозяина сайта как работает авторизация.

    Типично возвращается токен авторизации который и надо сохранить и посылать при запросе.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    27 марта 2019 г. 15:42
    Модератор
  • В общем в продолжении, надо залогиниться и скачать с сайта XML. Так вот перерыл кучу иностранных форумов, вроде решение нашел, но не у всех работает.

    $mailru = Invoke-WebRequest 'https://portal.ru/' -SessionVariable session
    
    $form = $mailru.Forms[0]
    $form.Fields
    
    $form.Fields["login"] = "1"
    $form.Fields["password"] = "12345"
    
    Invoke-WebRequest -Uri ("https://portal.ru/data" + $form.Action) -WebSession $session -Method POST -Body $form.Fields -OutFile C:\1\data.xml
    По идее я ввожу логин и пароль, все это дело содержится в переменной Session. Все же верно? просто у меня все равно не работает. Подскажите , кто то может сталкивался?
    27 марта 2019 г. 20:20
  • Что бы Вы не делали, не храните пароль на компьютере. Ни в открытом виде (в скрипте), ни в зашифрованном. Может быть пора отказаться от идеи скрипта совсем , если сайт важный для Вас.
    28 марта 2019 г. 0:07
  • Спасибо за совет. Но у меня уже просто задача которую нужно решить, как буду хранить пароль это другой вопрос. Просто есть задача, которую я не могу решить. Уже в агонии.)
    28 марта 2019 г. 5:14
  • В общем в продолжении, надо залогиниться и скачать с сайта XML. Так вот перерыл кучу иностранных форумов, вроде решение нашел, но не у всех работает.

    $mailru = Invoke-WebRequest 'https://portal.ru/' -SessionVariable session
    
    $form = $mailru.Forms[0]
    $form.Fields
    
    $form.Fields["login"] = "1"
    $form.Fields["password"] = "12345"
    
    Invoke-WebRequest -Uri ("https://portal.ru/data" + $form.Action) -WebSession $session -Method POST -Body $form.Fields -OutFile C:\1\data.xml
    По идее я ввожу логин и пароль, все это дело содержится в переменной Session. Все же верно? просто у меня все равно не работает. Подскажите , кто то может сталкивался?
    Вы же используете при отладке своих запросов что-то типа Fiddler? Если да, то в ответах на запрос о чем пишут?
    28 марта 2019 г. 5:45
  • Доброе утро! Да вроде победил. Немного не понял что вы имеете ввиду.
    28 марта 2019 г. 5:57
  • Доброе утро! Да вроде победил. Немного не понял что вы имеете ввиду.
    Fiddler - это приложение помогает проводить отладку http запросов. Показывает целиком весь запрос к web ресурсу и позволяет просматривать ответ (код ответа, заголовки ответа, тело ответа и прочее).
    28 марта 2019 г. 7:03