
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.05.2017, 01:34
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
Здравствуйте, имеется компонент на дельфи RealThinClient не могу решить проблему с синхронность. Вот код на получение текста по ssl запросу но в ответ получаю пустоту Код: pascal 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. но если я делаю для получения результата по возникшему событию, когда пришел результат ответа по запросу(асинхронный) на процедуру то все ок. Код: pascal 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. по дебагу видно что событие RtcDataReq_DataReceived на получение результата приходит несколько раз и на 3-4 раз я поучаю необходимые данные. Но мне нужно в получить результат в синхронном режиме в одном потоке, попробывал добавить такой вот код в конце процедуры запроса Код: pascal 1. 2. 3. 4. 5. но получаю пустой запрос, помогите кто знает как решить данную проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 11:11
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
сам не делал, но вот линк нагуглился: http://www.realthinclient.com/sdkarchive/index391a.html?cmd=viewtopic&topic_id=53§ion_id=9&sid=]RealThinClient Forums --> RTC SDK SUPPORT --> WaitForCompletion ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 11:14
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
P.S. а вообще, если о синхронных запросах идет речь, то можно было бы synapse использовать, там синхронность есть цель создания этой библиотеки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 12:40
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
Ни чего из той статьи не помогло. А synapse не использую из за долгого времени обработки запроса по сравнению с RTC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 17:33
|
|||
|---|---|---|---|
RealThinClient синхронный запрос |
|||
|
#18+
mity, 1. может быть имеет смысл разобраться, что не так с обработкой? 2. асинхронный режим совсем не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 18:25
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
На сколько я понимаю, обработку получения данных надо делать в TRtcDataRequest.OnDataReceived. Собирать их, например, в строку. А WaitForCompletion(true) сработает когда все данные будут получены. Также надо обрабатывать ошибки . На Reject и Abort - отдельные события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 18:51
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
vkorshun, На данный момент я так и делаю, но хотелось бы не ждать пока запрос обработается, но хотелось бы решить проблему нормальным способом т.е в одной процедуре. Может быть пакет приходит несколькими частями, и в компоненте я не могу прочитать все части, а вижу только первую пришедшую часть ответа. Ведь другие запросы я нормально обрабатываю, например GET http ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.05.2017, 19:39
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
1. Не понятно зачем. Библиотека заточена на ассинхронный режим работы. 2. Можно написать свой компонент унаследовавшись от текущего. Внутри определить переменную в которую будет писаться ответ. В начале запроса сбрасывть ее. Переопределить метеод получения данных. Обращаться к этой переменной после WaitForCompletion. Но, что будет если запрос будет выполнятся долго? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.05.2017, 13:12
|
|||
|---|---|---|---|
|
|||
RealThinClient синхронный запрос |
|||
|
#18+
mity, приветствую. Когда-то на RTC 6.3Х для подобных задач делал хелпер (код, правда, для FPC, работает из служб / dll). Надеюсь, чем-то поможет. Код: pascal 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. Вызывать примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2041279]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
7ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 349ms |

| 0 / 0 |
