Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 9
1

Как правильно написать REST клиент с авторизацией?

24.02.2016, 06:59. Показов 3730. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Я не очень уверен, в правильную ли ветку написал запрос, возможно она "для новичков", но вопрос больше к Веб-сервисам.
Есть задача - написать консольное приложение, которое бы отправляло REST запрос и показывало результат (заменить ручной труд).
Задача вроде бы простая, но есть три "но"
1.Для получения данных сейчас используется следующая цепочка действий:
- открывается специальная страница в браузере, вводится логин\пароль, нажимается кнопка "OK", юзер попадает на следующую страницу (с Hello World), после этого окрывается Dev Tools в браузере и копируются куки
- открывается Postman и туда пишется запрос к endpoint и в поле авторизации ставятся эти куки. (Точнее postman сам умеет их вытягивать с сайта - я для ущербности процесса описал)
2.На другом конце сидит oData и отвечает на запросы. В принципе для нее есть как Microsoft библиотека, так и сторонняя (которую считают более удачной). Но для начала надо разобраться с пунктом 1
3.Я открыл C# третий раз в жизни две недели назад и честно говоря "слегка в замешательстве" (пара лет питонячества дает о себе знать)

активное гугление позволило написать свой кривой клиент который умеет коннектиться и получать данные где либо вообще нет авторизации, либо она ограниченна "логином и пассвордом" без всяких кукисов. Хотя честно признаюсь - была тщетная попытка захардкодить куки...не помогло
Как я понимаю - в клиенте должно быть два запроса - один для получения cookie к первому адресу, а второй непосредственно к интересуемому end point. Была мысль коннектится к "живому" браузеру за cookies специально - но выглядит затея диковато.
Но как это реализовать - это пока выше моих познаний в языке. Буду признателен за любую помощь и совет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 06:59
Ответы с готовыми решениями:

Как правильно написать клиент?
Здравствуйте. Помогите. Имеется сервер который отправляет сообщение или принимает их случайном...

Как сделать клиент-серверное приложение с авторизацией и гарантированной доставкой информации?
Здравствуйте! Необходимо реализовать следующий функционал: 1. Отправка данных клиентом на...

Как правильно организовать spa с авторизацией?
Как правильно организовать spa с авторизацией? Сначала я хотел делать запрос в App родительском...

Клиент приложение с авторизацией вк
Доброй ночи. Не знаю в какой раздел написать, но предполагаю, что правильно. (Если ошибся, прощу...

14
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
24.02.2016, 08:30 2
Цитата Сообщение от mrmax Посмотреть сообщение
Задача вроде бы простая
Она скорее не простая, а поставленная не совсем четко.
Скажите что требуется, какой тип приложения. Клиент-серверное, или браузер-серверное?
Что касается именно REST - ниже ссылка на пример, где пошагово показывается создание службы. Но у WCF на данный момент столько вариаций, что можно запутаться. Лучше расскажите подробно, что требуется, как клиент и сервер будут взаимодействовать. Тогда будет проще что-то предложить.
http://www.codeproject.com/Art... Step-Guide
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 9
24.02.2016, 09:05  [ТС] 3
На самом деле задача стоит так "нужно создать framework для тестирования web-services" - это глобально. На данный момент у меня стоит задача более узко - научиться коннектиться к сервису, отправлять на него структурированные запросы и проверять их корректность. Например представим, что есть задача: проверить, что есть в базе 10 компаний. URI запроса www.server.com/country/product/company. Соответственно для меня сейчас стоит задача просто пройти проверку, послать запрос, получить ответ и вывести его на консоль. Пока самое простое - механизм авторизации и получения данных
Рисование тестов - шаг номер два

Добавлено через 6 минут
для начального понимания как это делается я использовал http://www.codeproject.com/Tip... ith-Csharp
и в итоге это заработало для случая когда не требуется никакая авторизация. И для начало мне хотяб "Допилить" этот код под мою схему авторизации. Это даст мне время разобраться уже более основательно с вопросом...
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
24.02.2016, 10:00 4
Цитата Сообщение от mrmax Посмотреть сообщение
framework для тестирования web-services" - это глобально.
Это даже более чем глобально, поскольку даже мне (с моим небольшим опытом) видится, как минимум два варианта тестирования: когда адреса служб и все методы контракта известны (тогда в этом нет ничего сложного) и тогда, когда известна только часть данных (например, контракт службы) и тогда задача усложняется, поскольку надо найти службу или службы в сети, проверить их на соответствие критериям поиска, получить метаданные и уже проанализировав их работать со службами.
Цитата Сообщение от mrmax Посмотреть сообщение
Пока самое простое - механизм авторизации и получения данных
Вы хотите написать свой механизм авторизации? Если так, это делается очень просто.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 9
24.02.2016, 18:03  [ТС] 5
Ну я не спорю что это просто...ну если иметь опыт ;-( а если его нету то уже сложнее. и я был бы очень благодарен за любую подсказку
...для начала хотябы понять как передать "захардкоженые" куки
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
24.02.2016, 18:48 6
Цитата Сообщение от mrmax Посмотреть сообщение
я был бы очень благодарен за любую подсказку
Могу набросать простенькую авторизацию-регистрацию на сервере через WCF. Если надо, можно попробовать сделать это через WCF HTTP (по правде говоря, не делал так еще, но там все то же самое, основные принципы те же).
1
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 9
24.02.2016, 19:31  [ТС] 7
О. Это было бы здорово, если вас не затруднит. У нас сильный лаг по времени, поэтому я могу отвечать с задержкой. Насчёт фреймворка - ну у меня будет описание всех запросов - это не проблема
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
26.02.2016, 12:00 8
mrmax, извиняюсь за задержку, был занят.
В архиве тестовый вариант клиента и файлы с кодом самой службы. Все файлы кода службы работают, за единственным исключением - строка соединения с БД там убрана. Точно такая служба сейчас размещена в сети, так что можете побаловаться с клиентом, проверить его работу.
И еще, это - именно служба WCF, без использования HTTP. Я немного почитал по именно этому направлению, сделать это не сложно (и я даже немного переделывал службу при написании под использование HTTP), но вернул назад, поскольку для проверки требуется уметь посылать нужные запросы из браузера (такие как к примеру POST), а я с Html чуть хуже чем совсем никак. Так что вам можно будет применить нужные атрибуты к операциям контракта (WebGet, WebInvoke) и вместо передачи объектов в операциях использовать строковые значения. Зайдите на любую страницу справки MSDN и введите в строке поиска WCF HTTP, там будут ссылки на примеры простых служб.
Вложения
Тип файла: rar Service.rar (51.8 Кб, 28 просмотров)
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 9
28.02.2016, 01:48  [ТС] 9
спасибо большое!!!
а может можно как то вам в личку писать вопросы (так как они могут быть не совсем для публичного проссмотра по ряду причин)
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
28.02.2016, 06:18 10
Цитата Сообщение от mrmax Посмотреть сообщение
может можно как то вам в личку писать вопросы
Пишите, вам вроде бы никто не запрещает))
0
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132
29.02.2016, 23:18 11
insite2012, сори если не по теме, но вы бы не могли более подробно рассказать о дирректории IIS Files.
Ну то есть как ОНА создается и как работает. Потому, что у меня тоже стоит задача удаленной работы серверной части. Где вы хостите свой код и все такое. Если долго писать, можно ссылками. Открыл .sln и не совсем могу понять как создавалачь часть IIS.
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
29.02.2016, 23:33 12
Цитата Сообщение от Baeron Посмотреть сообщение
вы бы не могли более подробно рассказать о дирректории IIS Files.
Без проблем. Для начала, надо включить IIS на вашем компьютере. Делается через панель управления, установка и удаление программ (или Программы и компоненты), и дальше пункт Включение и отключение компонентов Windows. Там отметить галочку на Службы IIS.
После этого у вас на диске С будет папка с именем inetpub, в ней папка с именем wwwroot. Это и есть виртуальный IIS сервер.
Теперь по созданию службы. Проект создавать не надо. В меню нажимаете Файл, создать, Веб-узел, выбираете Служба WCF. Выбираете расположение (в папке на диске, в FTP или IIS). Я всегда выбираю IIS, чтобы иметь возможность тут же писать клиента и из него обращаться к службе. В виртуальном каталоге IIS будет создана папка с именем вашей службы, в ней будет две папки (App_Code, App_Data) и два файла (Web.config, Service.svc). Вот и все. Так же будет создан шаблонный контракт службы и класс с его реализацией. Вы можете его переделать как вам надо. Потом пишете клиента, в нем адрес вашей службы такого вида http://localhost/<Имя_вашей_службы>/Service.svc
И можете из клиента работать со службой. Для переноса на сервер в сети достаточно эти две папки и два файла перенести на сетевой хост и изменить адрес в клиенте.
Вроде бы все рассказал. Если будут вопросы-напишете.
1
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132
01.03.2016, 00:23 13
Цитата Сообщение от insite2012 Посмотреть сообщение
Теперь по созданию службы. Проект создавать не надо. В меню нажимаете Файл, создать, Веб-узел, выбираете Служба WCF
Подскажи - это оно???
Как правильно написать REST клиент с авторизацией?

потому что
Цитата Сообщение от insite2012 Посмотреть сообщение
Файл, создать, Веб-узел, выбираете Служба WCF
такого у меня нет. Хоть я и установил IIS через панель инструментов.
0
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132
01.03.2016, 01:36 14
Вроде как нашел. Спасибо.
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
01.03.2016, 07:00 15
Цитата Сообщение от Baeron Посмотреть сообщение
Вроде как нашел. Спасибо.
Вот так.
Миниатюры
Как правильно написать REST клиент с авторизацией?  
0
01.03.2016, 07:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2016, 07:00
Помогаю со студенческими работами здесь

Клиент для DropBox REST API
Всем привет! Хочу написать небольшой клиент для DropBox. Есть у него прекрасный API для этого. При...

На localhost клиент не получает данные от rest api
Добрый день. Есть клиент на php + codeigniter и и rest api. Захостил их оба на localhost, но клиент...

Как правильно реализовать клиент-серверное приложение?
Требуется реализовать приложения клиент и сервер. Подскажите как правильно реализовать на клиенте...

Dir320NRU\b5 , как wi-fi - клиент (прописать правильно адреса)
Доброго времени суток. К делу. Есть два роутера dir320NRU\b5. И есть задача. Настроить первый...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru