Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
1

Нужен класс на C++ Visual Studio для работы с веб

31.08.2016, 08:31. Показов 1630. Ответов 22

Сделали серию парсеров/чеккеров на Java, которые работают с вебом. Сейчас появилась необходимость переезда на C++ Visual Studio.
Мне кажется наверняка кто то уже писал подобный. Задача достаточно обыденная.
Мне этот класс желательно получить побыстрее. Готов заплатить 1000р. тому кто его допилит под указанные требования, либо дайте пожалуйста ссылку на паблик.
Требования к классу такие:
-Понимать как http, так и https
-Выходной exe файл должен работать на системе старше xp sp1, размер не критичен.
-Не должно быть зависимостей от кучи dll, мне кажется в этой задаче они не нужны
-Иметь возможность сохранять и редактировать кукисы,а также веб заголовки
-Если полученные заголовки не удовлетворяют требованиям парсера – закрывать соединение(именно так сейчас джава работает достаточно шустро). Проще говоря – требуется метод, который получает заголовки, но не получает тело ответа.
-Необходимо иметь возможность отправлять как GET, так и POST запросы(относится к предыдущему пункту).
-Касательно редиректов. В случае, если в адрес редиректа входит адрес домена – такой редирект разрешаем и только так
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2016, 08:31
Ответы с готовыми решениями:

Существует ли в Visual Studio стандартный класс для работы с деками?
У меня возник такой вопрос. Существует ли в Visual Studio стандартный класс для работы с деками? На...

Нужен контрол для Visual Studio
Привет всем! Изучаю сейчас ASP в Visual Studio 2010, пишу небольшой сайт. Появилась проблема, нужно...

Установка Visual Studio для работы с C++
Я пытался скачать с майкрософта но у меня не получалось установить выдает ошибку

Недорогой ноутбук для работы в Visual Studio
Аллоха. Кто работает в среде Visual Studio или подобных, подскажите какой процессор сможет...

22
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
31.08.2016, 09:59 2
Все это делает cURL - остается только допилить под ваши нужды...
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 12:25  [ТС] 3
Я видел что такое курл под C++
Можно как то сделать чтобы не таскать с собой curllib.dll?
Про возможность заработать косарь я серьезно))
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 12:48 4
В свое время, когда мне нужно было переделать работу с http на https я долго искал вариант "малой кровью" - в итоге легче длл таскать, поверьте!

Добавлено через 2 минуты
кстати, если пройтись поиском по системному диску, то скорее всего cURL уже есть: какая-то прога его уже использует

Добавлено через 3 минуты
да и не обязательно с собой библиотеку таскать - можно скомпилировать в приложение...
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 13:35  [ТС] 5
Вован
Помоги скомпилировать без dll пожалуйста, если знаешь.
Для парсеров мне нужен хоть какой то браузер класс и пул потоков
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 13:50 6
давно делал, надо вспоминать...

сначала надо скачать сам cURL (архив порядка 6МБ)
потом:
Для статической линковки:
В настройках проекта указать:
С\С++, создание кода, Библиотека времени выполнения /MD

C++
1
2
3
4
5
6
7
8
9
#define CURL_STATICLIB // используется статическая сборка библиотеки
#include "cUrl\\include\\curl\\curl.h"
#ifdef _DEBUG
 #pragma comment(lib,"cUrl\\build\\Win32\\VC9\\LIB Debug\\libcurld.lib")
#else
 #pragma comment(lib,"cUrl\\build\\Win32\\VC9\\LIB Release\\libcurl.lib")
#endif
#pragma comment(lib,"ws2_32.lib")  // Зависимость от WinSocks2
#pragma comment(lib,"wldap32.lib")
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 15:52  [ТС] 7
Вовка, вспомни плиз.
И что посоветуешь с потоками?
Какую студию качать для серии парсеров?
Фреймворк какой то?
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 17:20 8
Да никаких фреймворков не надо. Я все собирал на Visual C++ 2008. Обычное диалоговое приложение. Вот, например, программа мониторит почтовые ящики и страничку интернет-провайдера на предмет наличия денег у меня на счету.
А вот ее размер на диске после инсталяции:
Нужен класс на C++ Visual Studio для работы с веб

Ну как размерчик по сравнению с curllib.dll?
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 17:24 9
Цитата Сообщение от bimply Посмотреть сообщение
И что посоветуешь с потоками?
А что советовать? Для каждого URL запускать свой поток - ничего сложного тут нет
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 17:37  [ТС] 10
Visual Studio 2012 норм?
Все таки с++ 2011 обновился в лучшую сторону, те же потоки удобнее стали
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 17:43 11
Да какая разница, если на 2008 все получилось?
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 19:57  [ТС] 12
Нашел что в си есть multicurl как и в php.
Правильно ли я понимаю что потоки использовать с курлом неверно?
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 20:27 13
В Вашем случае multicurl не нужно использовать (если не изменились требования 1-го сообщения)
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
01.09.2016, 21:04  [ТС] 14
Я хочу понять, будет ли существенная разница в скорости между потоками и multicurl
Мультикурл конечно оочень неудобный если делать более 1 шага
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
01.09.2016, 21:19 15
Цитата Сообщение от bimply Посмотреть сообщение
Если полученные заголовки не удовлетворяют требованиям парсера – закрывать соединение
и как это сделать с мультикурлом?
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
06.09.2016, 10:19  [ТС] 16
Пробую подключать в Visual Studio
Код
#include libcurl.lib - можно скачать
#include libcurl_static.lib - можно скачать
#include libcurl_a.lib - собирается такой файл из консоли
#include curllib.lib - собирается из проекта визуалки, который в дистрибутиве идёт
Работает только первый, остальные постоянно ругаются на неразрешенный внешний символ.
Хочу чтобы работало без внешних зависимостей и кучи плохого кода в процедурном стиле((
------
Пробовал собирать в Среде NetBeans + Cygwin
Нетбинс очень хорошая среда, если нужно собрать в моем случае парсер. Понравилось и по оформлению кода с хорошей подсветкой и тем, что curl собирается простым добавлением -lcurl линковщику.
Недостаток один - в современной реализации CygWin не позволяет собирать exe без runtime cygwin.dll, которого конечно же нету ни в одной системе. Вынес этот вопрос в ветку для новичков.

Что посоветуете? Пробовать собирать в cygwin или переехать все таки на студию?
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 475
06.09.2016, 12:19 17
Помнится тоже промучился, пока не получилось скомпилировать.
Вот, чем пользуюсь. На всякий случай всю папку заархивировал: build.zip
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
08.09.2016, 18:42  [ТС] 18
Vovka
Установил на виртуалку Visual Studio 2008.
Скопировал lib и obj файлы в папку
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
Задал параметр /nodefaultlib msvcrt.lib

Код программы такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// wconsole.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#define CURL_STATICLIB // используется статическая сборка библиотеки
#include "curl/curl.h"
#pragma comment(lib,"libcurld.lib")
#pragma comment(lib,"ws2_32.lib")  // Зависимость от WinSocks2
#pragma comment(lib,"wldap32.lib")
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    CURL *curl; //объект типа CURL 
    curl = curl_easy_init(); //инициализация
    return 0;
}
Валятся ошибки столбом:
------ Rebuild All started: Project: wconsole, Configuration: Debug Win32 ------
Deleting intermediate and output files for project 'wconsole', configuration 'Debug|Win32'
Compiling...
stdafx.cpp
Compiling...
wconsole.cpp
Compiling manifest to resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
Linking...
wconsole.obj : error LNK2019: unresolved external symbol _curl_easy_init referenced in function _wmain
wconsole.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in function _wmain
wconsole.obj : error LNK2001: unresolved external symbol __RTC_Shutdown
wconsole.obj : error LNK2001: unresolved external symbol __RTC_InitBase
LINK : error LNK2001: unresolved external symbol _wmainCRTStartup
C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\wconsole\Debug\wconsole.exe : fatal error LNK1120: 5 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\wconsole\wconsole\Debug\BuildLog.htm"
0
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 41
12.09.2016, 00:23  [ТС] 19
Решил вопрос переездом на Code::Blocks + MinGW
Намного более интуитивно понятная среда и компилятор.
Правда пустой екзе теперь весит 850 кб. Ну как пустой, который получает только веб страницу и печатает ее в консоль)
0
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
12.09.2016, 01:49 20
bimply, WinHTTP для этого существует. Он кстати еще и WebSocket умеет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2016, 01:49

Ноутбук для работы в visual studio 2012
В общем, планирую купить ноутбук для программирования в vs2012, вот думаю, какой лучше выбрать??...

Ноут для наилучшей работы Visual Studio 2010
Посоветуйте пожалуйста марку производителя Ноутбуков и оптимальную начинку для наилучшей работы...

Как Visual Studio 2005 перекофигурить для работы C#?
Привет Всем. При установке Visual Studio 2005 была заточена для работы с С++. Подскажите, плиз,...

Документацию для работы с MySQL в Visual Studio C# на русском
Доброго времени суток. Не смог найти хорошую документацию для работы с MySQL в Visual Studio C#....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru