Anonymous | Login | Signup for a new account | 21-11-24 09:51 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0000596 | SAS.Планета | [All Projects] Хотелка | public | 15-04-2011 11:54 | 10-10-2012 11:45 | ||||
Reporter | zed | ||||||||
Assigned To | vdemidov | ||||||||
Priority | normal | Severity | feature | Reproducibility | have not tried | ||||
Status | closed | Resolution | fixed | ||||||
Platform | Windows | OS | XP | OS Version | SP3 | ||||
Product Version | 110418 | ||||||||
Target Version | 120808 | Fixed in Version | 120808 | ||||||
Summary | 0000596: Возможность выполнять HTTP запросы из паскаль-скриптов | ||||||||
Description | Чтобы можно было запрашивать дополнительные данные от сервера, для правильного формирования url и headers основного запроса. | ||||||||
Tags | http headers, скрипты | ||||||||
Attached Files | |||||||||
Relationships | |||||||||||
|
Notes | |
(0001920) zed (manager) 15-04-2011 11:55 |
Вот такая функция будет доступна в скрипте: function DoRequest(const AHost, ADoc, ARequestHeader, APostData: AnsiString; UseSSL: Boolean; out AResponseHeader, AResponseData: AnsiString): Cardinal; Она работает как с POST так и с обычными GET + введена опция UseSSL по которой устанавливается (либо нет) SSL соединение. Если нужен POST запрос, то заполняется переменная APostData, в противном случае (APostData = '') выполняется GET запрос. Эта функция НЕ часть стандартной качалки, а сама в себе - абсолютно независимая. Основное назначение - получение дополнительных данных от сервера для формирования правильного запроса на тайл. Результат функции - статус код ответа сервера. |
(0001921) vdemidov (manager) 15-04-2011 12:01 |
Только нужно заметить, что этот запрос будет подвешивать все обращения к скриптам этой карты. |
(0001922) zed (manager) 15-04-2011 12:14 edited on: 15-04-2011 12:15 |
Да, но это уже вопрос к архитектуре SAS - несколько потоков данной карты юзают один объект скрипта, когда по-хорошему надо бы использовать свой экземпляр на каждый поток. Поэтому, любой вызов скрипта подвешивает остальные запросы к этому скрипту. А http лишь частный случай, и упомянуто о нём в свете того, что запрос к серверу может занять несколько секунд (вплоть до тайм-аута) и соответственно притормозить (заставить ждать в очереди) остальные потоки. До этого в скриптах небыло столь время-затратных операций. |
(0001923) vdemidov (manager) 15-04-2011 12:22 |
Имено поэтому оно все так и устроено было, что затратных операций там не предвиделось. |
(0003702) zOn (reporter) 05-09-2011 18:50 |
т.е. таким образом можно будет проверять версии и ключи? странно, но хотелки с "автоматическим обновлением версий" я не нашел. хотя многие об этом говорили на форумах. я только "за". |
(0004171) zed (manager) 24-10-2011 15:58 edited on: 24-10-2011 16:00 |
Можно пользоваться. Вот такой синтаксис: function DoHttpRequest(const ARequestUrl, ARequestHeader, APostData: string; out AResponseHeader, AResponseData: string): Cardinal; Да, и у каждого потока теперь свой экземпляр скрипта. |
(0004172) Tolik (manager) 25-10-2011 06:00 |
А можно пример? Как пользоваться? |
(0004173) vdemidov (manager) 25-10-2011 06:23 |
Лучше пока не пользоваться. Я собираюсь в ближайшее время синтаксис поменять. Вместо простой функции будет переменная с указателем на объект. |
(0004180) zed (manager) 25-10-2011 17:56 |
>А можно пример? Как пользоваться? var url, head, head1, data, data1: string; begin url := 'http(s)://example.com/index.html'; head := 'User-Agent: SASPlanet'; data := 'Some post data or empty string for GET request'; if DoHttpRequest(url, head, data, head1, data1) = 200 then begin ... end; end |
(0007545) zed (manager) 20-06-2012 08:12 |
Тоже сломано? |
(0007548) vdemidov (manager) 20-06-2012 08:36 edited on: 20-06-2012 11:14 |
Нет. Просто теперь вместо функции есть переменная Downloader типа ISimpleHttpDownloader, в которой может быть объект, который может делать http-запрос. И в zmp должна быть включена возможность запросов из скрипта: IsUseDownloaderInScript=1 PS: Буду рад, если кто-то опишет это в Wiki |
(0007566) zed (manager) 20-06-2012 17:23 |
Не работает: Exception class Exception with message 'Error at script bytecode loading Cannot Import class:-'. Делаю (в zmp прописал IsUseDownloaderInScript=1): var VRequestUrl, VRequestHeader, VPostData: string; VResponseCode: Cardinal; VResponseHeader, VResponseData: string; begin if (Downloader <> nil) then begin VRequestUrl := 'http://google.com/'; VRequestHeader := ''; VPostData := ''; VResponseHeader := ''; VResponseData := ''; VResponseCode := Downloader.DoHttpRequest(VRequestUrl, VRequestHeader, VPostData, VResponseHeader, VResponseData); if VResponseCode = 200 then begin ScriptBuffer := VResponseData; end else begin ScriptBuffer := VResponseHeader; end; end; end. Если убрать проверку (Downloader <> nil), то падает с сообщением: Exception class EAccessViolation with message 'Access violation at address 00000001. Read of address 00000001'. |
(0007568) vdemidov (manager) 20-06-2012 17:32 |
Потому что проверять нужно используя Assigned() |
(0007569) zed (manager) 20-06-2012 17:37 |
Ну да, зато всё-равно падает при вызове качалки с EAccessViolation. |
(0007570) vdemidov (manager) 20-06-2012 17:40 |
Ну это значит что качалка не создалась. Нужно смотреть почему. |
(0007571) zed (manager) 20-06-2012 17:45 |
Создаётся. Но ты посмотри. |
(0007640) vdemidov (manager) 25-06-2012 11:49 |
Мда. Мелкая ошибка была. |
Users who viewed this issue | |
User List | Anonymous (4073x), ingener (4x), qq117511 (1x), omen98 (1x), nnngrach (1x), png8 (2x), hrucker (1x), kurt23 (1x) |
Total Views | 4084 |
Last View | 21-11-2024 09:51 |
Issue History | |||
Date Modified | Username | Field | Change |
15-04-2011 11:54 | zed | New Issue | |
15-04-2011 11:54 | zed | Status | new => assigned |
15-04-2011 11:54 | zed | Assigned To | => zed |
15-04-2011 11:55 | zed | Note Added: 0001920 | |
15-04-2011 11:56 | zed | Relationship added | related to 0000366 |
15-04-2011 12:01 | vdemidov | Note Added: 0001921 | |
15-04-2011 12:03 | vdemidov | Target Version | 110418 => 24xxxx |
15-04-2011 12:14 | zed | Note Added: 0001922 | |
15-04-2011 12:15 | zed | Note Edited: 0001922 | View Revisions |
15-04-2011 12:22 | vdemidov | Note Added: 0001923 | |
15-04-2011 15:00 | gpsMax | Tag Attached: http headers | |
15-04-2011 15:00 | gpsMax | Tag Attached: скрипты | |
05-09-2011 18:50 | zOn | Note Added: 0003702 | |
26-09-2011 17:24 | zed | Relationship added | child of 0000984 |
24-10-2011 15:54 | zed | Status | assigned => resolved |
24-10-2011 15:54 | zed | Fixed in Version | => 120808 |
24-10-2011 15:54 | zed | Resolution | open => fixed |
24-10-2011 15:58 | zed | Note Added: 0004171 | |
24-10-2011 16:00 | zed | Note Edited: 0004171 | View Revisions |
25-10-2011 06:00 | Tolik | Note Added: 0004172 | |
25-10-2011 06:23 | vdemidov | Note Added: 0004173 | |
25-10-2011 17:56 | zed | Note Added: 0004180 | |
23-01-2012 08:29 | vdemidov | Target Version | 24xxxx => 120808 |
23-01-2012 10:50 | vdemidov | Product Version | => 110418 |
20-06-2012 08:12 | zed | Note Added: 0007545 | |
20-06-2012 08:36 | vdemidov | Note Added: 0007548 | |
20-06-2012 11:14 | vdemidov | Note Edited: 0007548 | View Revisions |
20-06-2012 13:06 | zed | Assigned To | zed => |
20-06-2012 13:06 | zed | Status | resolved => confirmed |
20-06-2012 13:06 | zed | Fixed in Version | 120808 => |
20-06-2012 13:08 | zed | Assigned To | => vdemidov |
20-06-2012 13:08 | zed | Status | confirmed => resolved |
20-06-2012 13:08 | zed | Fixed in Version | => 120808 |
20-06-2012 17:23 | zed | Note Added: 0007566 | |
20-06-2012 17:32 | vdemidov | Note Added: 0007568 | |
20-06-2012 17:37 | zed | Note Added: 0007569 | |
20-06-2012 17:40 | vdemidov | Note Added: 0007570 | |
20-06-2012 17:45 | zed | Note Added: 0007571 | |
21-06-2012 17:14 | zed | Status | resolved => assigned |
22-06-2012 13:37 | vdemidov | Resolution | fixed => reopened |
25-06-2012 11:49 | vdemidov | Note Added: 0007640 | |
25-06-2012 11:49 | vdemidov | Status | assigned => resolved |
25-06-2012 11:49 | vdemidov | Resolution | reopened => fixed |
10-10-2012 11:45 | Tolik | Status | resolved => closed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |