Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
Чем больше приходится использовать VS C++, тем больше мне нравится Python. Задача тривиальная по URL получить html разметку и записать в файл, взял пример http://rsdn.org/?article/inet/wininet.xml В VS 2010 в свойствах проекта ставишь НАБОР СИМВОЛОВ - ИСПОЛЬЗОВАТЬ МНОГОБАЙТОВУЮ КОДИРОВКУ -все работает. В VS 2017 при аналогичных действиях ошибка при компиляции //ОШИБКА идентификатор Lurl не определен Что еще нужно сделать?????? Если знаете другой способ получить html разметку напишите!!! Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 13:20 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
сразу скажу, что я не пользуюсь в свой практике классом string (ибо он крайне неудобен для меня), но мне думается, что объект url - это класс string и использовать макрос TEXT с этим классом не получится. Нужно, либо переконвертировать string в wstring и потом передавать ее без TEXT, либо сконвертировать ulr.c_str() в wchar_t* и тоже передавать его без TEXT. Либо использовать ANSI версию функции InternetConnect, то есть InternetConnectA, если таковая вообще существует, тут надо смотреть как она объявлена в <wininet.h>. Но опять же макрос TEXT в данном случае лишний. По конвертации см. Какой извращенец писал MessageBoxW? , первый пост, в спойлере куча функций для конвертации строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 13:51 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
Еще один вариант Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 13:56 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
polin11, макрос TEXT -он для строковых/символьных литералов (если определён UNICODE - добавляет к литералу префикс L) с переменной - смысла не имеет. многобайтовая кодировка - это не UNICODE префикс L - приписался- проект юникодный варианты: вместо std::string - использовать std::wstring, преобразовать string к unicode, явно использовать ANSI версию InternetOpenA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 14:05 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
Исправл код, как Вы советовали, код скомпилировался, запускаю в качестве URL пробовал yandex.ru (протокол https), mail.ru (протокол https), rsdn.org (протокол http) и другие, переменная bSend имеет значение false. В файл html разметка не записывается. Почему, что делаю неверно??? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 17:07 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
polin11, https://msdn.microsoft.com/en-us/library/windows/desktop/aa384247(v=vs.85).aspx устанавливает код ошибки, если вернула FALSE, его можно получить вызвав ::GetLastError(); Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 17:25 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
вангую - в url - полный url в InternetConnect нужно передавать имя хоста в HttpOpenRequest - только путь и querystring ( или просто / ) на MSDN полно примеров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 17:28 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
dwErrCode = 2 исходя из https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx 2 ERROR_FILE_NOT_FOUND А что мне передовать, как я понимаю например url=host+path, например url="news.sportbox.ru/Vidy_sporta/Biatlon" host="news.sportbox.ru" path="/Vidy_sporta/Biatlon" тогда Код: plaintext 1. 2. Если url="yandex.ru", то host="yandex.ru" path="", path="/" поэтому Код: plaintext 1. 2. 3. dwErrCode = 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 17:40 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
polin11, запустил Ваш пример - всё работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 18:24 |
|
||
|
WININET в VS2017
|
|||
|---|---|---|---|
|
#18+
https://stackoverflow.com/questions/18611274/httpsendrequest-returns-failure-error-code-2-when-work-offline-enabled Всем СПАСИБО, сделал IE браузером по умолчанию, флаг работать автономно не стоял, проставил, снял, все заработало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 05:51 |
|
||
|
|

start [/forum/moderation_log.php?user_name=trataran-4]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 443ms |
| total: | 721ms |

| 0 / 0 |
