пятница, 1 апреля 2016 г.

Как послать доллар через RESTDebugger

Выдали мне партнёры точку доступа к данным и сказали: "Пиши в HTTP-заголовке 'X-Auth: abracadabraabracadabraabracadabra$abracadabraabracadabraabracadabra', а то неавторизованный доступ будет".

Я беру Fiddler (я его всегда беру), захожу в Composite и делаю запрос как учили. В результате - дерево, JSON. А как бы табличкой посмотреть?

Тут вспомнился мне RESTDebugger наш. Вот, думаю, сейчас и посмотрим. Запускаю, а мне - "неавторизованный доступ". Как это? Я же скопировал! Смотрю в том же Fiddler и вижу - 'X-Auth: abracadabraabracadabraabracadabra%24abracadabraabracadabraabracadabra', т.е. '%24' вместо '$'.

Ага, проблема понятна - в RESTDebugger надо у параметра включить TRESTRequestParameterOption.poDoNotEncode в Options. Только у RESTDebugger нет в диалоге редактирования параметров ничего про Options. А почему бы не сделать?

Исходники RESTDebugger, писанные на FireMonkey, нам даны в $(BDS)\source\data\rest\restdebugger. Но не все - не хватает uRESTDebuggerResStrs. Его я взял из блога какого-то хорошего человека ZACares-hk. Честно сказать, не уверен, что это человек - может, ангел.

Я добавил галку в uCustomHeaderDlg_frm, инициализировал её при передаче параметра для редактирования в Tfrm_CustomHeaderDlg.Create, в uMain_frm подредактировал Tfrm_Main.DoAddCustomParameter и Tfrm_Main.DoEditCustomParameter, а также в uRESTObjects дополнил TRESTRequestParams.AsJSONObject и TRESTRequestParams.FromJSONObject. Ещё, правда, пришлось на второй закладке главной формы список параметров поправить в размерах - он наезжал на кнопки и уезжал вниз за пределы вкладки. И всё заработало!


Не знаю, пользуется ли кто этим RESTDebugger, собирается ли кто из официальных разработчиков что-то с ним делать, или может ли кто этих разработчиков попросить включить эти изменения в дистрибутив, чтобы "в будущих многозадачных версиях ДОС"* не пришлось всё заново перекомпиливать, но вот: https://github.com/alhymov/RESTDebugger-.git 

*-врезалась мне в память цитата из "Руководства по написанию драйверов для MS-DOS".