Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
1

Авторизация на сайте и получение данных по запросу

19.08.2017, 00:17. Показов 1770. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Ребят подскажите. В общем делаю авторизацию на сайте, все хорошо проходит я авторизуюсь. Потом мне нужно по запросу получить JSON в Response. Но мне выдает что я не авторизован. Как можно поддержать (работать в той же сессии как я понимаю).

Делаю запрос на авторизацию:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  LoginData, Response: TStrings;
begin
  LoginData := TStringList.Create;
  Response := TStringList.Create;
  try
    LoginData.Add('username=' + Form1.edt1.Text);
    LoginData.Add('password=' + Form1.edt2.Text);
    LoginData.Add('rememberme=false');
    LoginData.Add('type=shipstation');
    Response.Text := Form1.idhtp1.Post('https://ss5.**********.com/api/auth/GetToken', LoginData);
    Form1.mmo1.Lines.Clear;
    Form1.mmo1.Lines.Add(Response.Text);
  except
 
  end;

Так пытаюсь получить JSON (в анализатое смотрел):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  TovarData, Response: TStrings;
  page, sort, dir, pageSize, showInactive: string;
begin
  TovarData := TStringList.Create;
  Response := TStringList.Create;
  //try
    TovarData.Add('page=1');
    TovarData.Add('sort=Name');
    TovarData.Add('dir=asc');
    TovarData.Add('pageSize=500');
    TovarData.Add('showInactive=false');
    Form1.idhtp1.Post('https://ss5.*********.com/api/products?', TovarData);
    Form1.mmo2.Lines.Clear;
    Form1.mmo2.Lines.Add(Response.Text);
  //except
 
  //end;
Буду признателен за любую подсказку куда смотреть.

Добавлено через 10 минут
Цитата Сообщение от First Посмотреть сообщение
Но мне выдает что я не авторизован
Точнее пишет: HTTP/1.1 401 Unauthorized
0
Лучшие ответы (1)
19.08.2017, 00:17
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2017, 00:17
Ответы с готовыми решениями:

Авторизация на сайте и получение данных из личного кабинета на сайте
В общем, проштудировав три справочника за неделю и полазав в интернете, кроме как опухнувшего мозга ничего не получил.. В общем, есть...

Авторизация на сайте и получение html кода страницы
Доброго всем времени суток! У меня возникла одна проблема в написании кода. Может, кто-то сможет мне помочь? Имеется сайт,...

Получение данных по запросу через COM Порт
Добрый день. Сначала немного опишу общую картину. Имеется электронная индикаторная головка с подключение к ПК через USB порт, но...

11
 Аватар для krapotkin
5876 / 4603 / 1449
Регистрация: 14.04.2014
Сообщений: 20,417
Записей в блоге: 20
19.08.2017, 16:01 2
в ответ на логин вам должны выдать какие-то данные, которые нужно присоединять к последующим запросам неким образом, который придумали авторы
1
 Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
19.08.2017, 16:18  [ТС] 3
Цитата Сообщение от krapotkin Посмотреть сообщение
в ответ на логин вам должны выдать какие-то данные, которые нужно присоединять к последующим запросам неким образом, который придумали авторы
Да я получаю данные в response

JSON
1
{"success":true,"userName":"dropshipping1","username":"dropshipping1","userId":"e01b8939-4a2d-488e-9ce2-e9d904dff767","seller":303692,"homeCountry":"CA","email":"6821652@mail.ru","token":"JNNK2KbdQPvrMNxKFJL9ZXDbkq79xJQAHWEM8sZ+R8KR0ppmc8uStlBO96cyhvBv/a6tOvnWTeIt73yu5n5h92/vo1l49RVqG+H7B7BNFb3+KML2Q2RJSSn9LBCk/DMXr6nZVwoxjh3lI0RnqopyuWMBJgu9v4h3H8Ku2seS7gkWYU0NGLn70HBnU3+2q2BKcaKzKJuXKgXzZrT6xS+YRm9Ig4LAoA+6yQCRW9fr+yjiIcq/ecrvfpvhZP0B/XvG3PjTi5TQfcLrMb/YTdv4tOUvjRwqQNbeqGUXWzqo7NszaTDQaBeRXhk/TobYNEl4os0Mm1wcSzlNXZWUBRatRTXPSiesxdXxegsht5wW4+qtS8VdHFL/iR0LIqkSebyKHIrK95afpGMmV/iFnOLaZT+LZoRN22+yI3DpU7KymVmIkZZsP/zLWSd+PBSxlhsPbqllgIJHEWi9rLJ0zKbeaNmFECEvlTTiQr8AqOx50RJV8GbUYI81/OZALiwZxYn1SCibzgr/Q2gjv3wJh34GOYPFqae4A/JIhva32KtGjs6PtAUG+BSVADTNcEAch7FmGKcID5oPfXwHP0vquSihFRr33lj2jzVDh/1vYg9bg+WaoOlrwrUo/oAFmWogcl/IptLMnVeVeDZia3KmFEqD49E1CQSpxIS6IQ+ZE8qEaQA=","sessionHandle":"e4a5f4b3-295c-4198-8cae-8bb5f2d138a8","tokenTtl":"0","proviso":128,"gravatar":"https://www.gravatar.com/avatar/eaa6935cfc769f0015cb3531777b36c3","redirect":false,"redirectHost":null}

То есть надо смотреть какие параметры передавать надо что бы выполнить запрос?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
19.08.2017, 16:40 4
Может просто подключить куки-менеджер?
1
 Аватар для krapotkin
5876 / 4603 / 1449
Регистрация: 14.04.2014
Сообщений: 20,417
Записей в блоге: 20
19.08.2017, 17:58 5
нет не просто
вот зачем вам приходит токен?
чисто нечем людям было заняться? давайте что-нибудь пошлем в ответ на запрос???
если нет описания API можно только сниффать обмен существующего приложения и смотреть, куда и как эти данные пихаются
1
 Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
19.08.2017, 19:10  [ТС] 6
Куки не помогают. Выходит что мне надо вытащить токен из ответа от сервера и юзать его в запросах? А что бы знать что юзать надо посмотреть в анализаторе что за запрос идет и какие параметры?
0
 Аватар для krapotkin
5876 / 4603 / 1449
Регистрация: 14.04.2014
Сообщений: 20,417
Записей в блоге: 20
19.08.2017, 19:54 7
все верно
для того, чтобы самому слать запросы, надо делать это так как делают другие
1
 Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
22.08.2017, 12:39  [ТС] 8
Простите за наглость, но подскажите почему не могу получить токен, выдает ошибку и все.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 Items: ISuperObject;
  A: ISuperArray;
  JSON, response_token: string;
  i: Integer;
  LoginData, Response: TStringList;
begin
  LoginData := TStringList.Create;
  Response := TStringList.Create;
  try
    LoginData.Add('username=' + Form1.edt1.Text);
    LoginData.Add('password=' + Form1.edt2.Text);
    LoginData.Add('rememberme=false');
    LoginData.Add('type=shipstation');
    Response.Text := Form1.idhtp1.Post('https://ss5.*************.com/api/auth/GetToken', LoginData);
    A := TSuperArray.Create(Response.Text);
    for i := 0 to A.Length - 1 do
    begin
      Items := A.O[i];
      response_token := Items.S['token'];
      Form1.mmo2.Lines.Add(response_token);
    end;
  except
    Form1.mmo2.Lines.Clear;
    Form1.mmo2.Lines.Add('Ошибка!!!');
  end;
Ошибка: Access violation at address ....
0
 Аватар для krapotkin
5876 / 4603 / 1449
Регистрация: 14.04.2014
Сообщений: 20,417
Записей в блоге: 20
22.08.2017, 13:21 9
Лучший ответ Сообщение было отмечено First как решение

Решение

Цитата Сообщение от First Посмотреть сообщение
A := TSuperArray.Create(Response.Text);
а что, ответ похож на JSON array ??
по мне, так обычный TSuperObject
соответственно A не создается. а вы и не проверяете. лезете for ... A.Length
соответственно, NIL.Length не существует

еще раз настоятельно рекомендую пользоваться дебаггером. и он вам даже показал, на какой строке ошибка
а вот мы почему-то должны догадываться.
1
 Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
22.08.2017, 22:15  [ТС] 10
Спасибо большое я разобрался. Теперь точно ошибаться в этом не буду. Спасибо еще раз.

Добавлено через 3 часа 19 минут
Ребят собственно по теме еще спрошу вас. В общем я посмотрел какие параметры отправляются на сервер по запросу, но там нет куда отправить токен.

Передаваемые параметры


page 1
sort Name
dir asc
pageSize 500
showInactive false


Вот думаю как получить ответ. Может надо использовать cookie? Тогда подскажите, что смотреть.
Простите за глупые вопросы, но с таким не работал(
0
 Аватар для krapotkin
5876 / 4603 / 1449
Регистрация: 14.04.2014
Сообщений: 20,417
Записей в блоге: 20
22.08.2017, 22:31 11
смотрите не на параметры а на заголовки (headers)
обычно именно там передается токен
Навскидочку что то типа
Authorization: Bearer JNNK2KbdQPvrMNxKFJL9ZXDbkq79xJQAHWEM8sZ+R8KR0ppmc8uStlBO96cyhvBv/a6tOvnWTeIt73yu5n5h92/vo1l49RVqG+H7B7BNFb3+KML2Q2RJSSn9LBCk/DMXr6nZVwoxjh3lI0RnqopyuWMBJgu9v4h3H8Ku2seS7gkWYU0NGLn70HBnU3+2q2BKcaKzKJuXKgXzZ rT6xS+YRm9Ig4LAoA+6yQCRW9fr+yjiIcq/ecrvfpvhZP0B/XvG3PjTi5TQfcLrMb/YTdv4tOUvjRwqQNbeqGUXWzqo7NszaTDQaBeRXhk/TobYNEl4os0Mm1wcSzlNXZWUBRatRTXPSiesxdXxegsht5wW4+qtS8VdHFL/iR0LIqkSebyKHIrK95afpGMmV/iFnOLaZT+LZoRN22+yI3DpU7KymVmIkZZsP/zLWSd+PBSxlhsPbqllgIJHEWi9rLJ0zKbeaNmFECEvlTTiQr8AqOx50RJV8GbUYI81/OZALiwZxYn1SCibzgr/Q2gjv3wJh34GOYPFqae4A/JIhva32KtGjs6PtAUG+BSVADTNcEAch7FmGKcID5oPfXwHP0vquSihFRr33lj2jzVDh/1vYg9bg+WaoOlrwrUo/oAFmWogcl/IptLMnVeVeDZia3KmFEqD49E1CQSpxIS6IQ+ZE8qEaQA=
1
 Аватар для First
21 / 14 / 11
Регистрация: 09.06.2011
Сообщений: 832
Записей в блоге: 3
22.08.2017, 22:40  [ТС] 12
Да такое я уже нашел.
Authorization-Token
lIPwYCCqHx0paUEO8x3TbeuMjpy6i7…wNgb4YPckBMMcxwoL0Oi2GnlhAfE=

А потом как действовать? Я так понимаю перед запросом надо указать?
Примерно так:

Delphi
1
2
  Form1.idhtp1.Request.CustomHeaders.AddValue('Authorization', тут токен который я получаю);
  Form1.mmo3.Text := Form1.idhtp1.Get('https://ssapi.*********.com/products/');
Добавлено через 5 минут
Все разобрался все получаю.
Не знаю как правильно или нет но работает (если что то поправлю потом)

Delphi
1
2
  Form1.idhtp1.Request.CustomHeaders.AddValue('Authorization-Token', тут токен который получил);
  Form1.mmo3.Text := Form1.idhtp1.Get('https://ss5.************.com/api/products?page=1&sort=Name&dir=asc&pageSize=500&showInactive=false');
СПАСИБО! Вам люди добрые!!!
0
22.08.2017, 22:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2017, 22:40
Помогаю со студенческими работами здесь

Авторизация на сервере и получение данных
Всем привет)Прошу в меня камнями не кидать,я новичок,читаю гайды ,книги,но одному поднимать весь обьем знаний нереально для меня( ...

Авторизация на сайте и ввод данных в поля
Добрый день. Нужен скрипт для авторизации на сайте и ввода данных в поля(формы ввода). Первую часть нашел, но не могу заставить работать....

Получение данных введенных в форму на сайте
Вообщем есть идея: написать программу которая будет работать подобно вирусу (без окна, запускаться с автозагрузки). Идея проги такова:...

Получение капчи с сайта и отправка данных в форму на сайте
Помогите начинающему программисту. Допустим нужна программа для регистрации тут. Как это (получение капчи и отправка данных в форму)...

Авторизация в Windows по запросу клиента
Здравствуйте, дорогие форумчане. У меня есть сервер, который запускается на моём компьютере до входа пользователя в систему. Сервер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Отключение отслеживания файла, занесенного в .gitignore в Git
hw_wired 10.02.2025
Git помогает следить за изменениями в проекте, но иногда требуется исключить определенные файлы из системы контроля версий. Это могут быть конфигурационные файлы с локальными настройками, временные. . .
Что такое use strict в JavaScript
hw_wired 10.02.2025
Директива use strict - способ перевода JavaScript-кода в строгий режим работы, который делает язык более безопасным и предсказуемым. Она появилась в ECMAScript 5 как ответ на многочисленные проблемы,. . .
Как в jQuery проверить, что элемент скрыт
hw_wired 10.02.2025
jQuery предоставляет несколько эффективных способов определить, скрыт элемент или отображается на странице. Самый простой метод использует специальные селекторы :hidden и :visible. Селектор :hidden. . .
Как проверить (check out) ветку Git в удаленном репозитории
hw_wired 10.02.2025
Проверка удаленной ветки в Git требует понимания нескольких базовых концепций и точного выполнения определенной последовательности действий. Для начала необходимо получить актуальную информацию о. . .
chucknorris в HTML и другие обозначения цветов
hw_wired 10.02.2025
HTML, как основной язык разметки веб-страниц, прошел длинный путь развития в плане работы с цветами. На заре развития веб-технологий разработчики могли использовать только базовый набор из 16. . .
Стек и куча: отличия и назначение
hw_wired 10.02.2025
Управление памятью - ключевой элемент работы любой программы. В современных языках программирования память делится на две основные области: стек и кучу. Каждая из них обладает уникальными. . .
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru