Mam pytanie. Jak pobrać kod źródłowy strony? Z jakiej biblioteki mam skorzystać?
Znalazłem coś na temat curl, ale nie wiem czy nie istnieje jakis inny sposób bo c++ builder 6 standardowo chyba nie jest wyposażony w tą bibliotekę.
Prosiłbym o pomoc.
Bezproblemowo i szybko zrobisz to za pomoca libcurl'a. wejdz na strone tej biblioteki, zobacz samples i masz tam bodajze pierwszy o pobieraniu strony.
wyskakuje mi error i twierdzi ze nie mam takiej biblioteki gdy probuje dac include
Nie mam c++ buildera, poszukaj w googlach.
Ja znalazlem cos takiego http://stackoverflow.com/questions/1803002/how-can-i-add-libcurl-to-a-borland-c-builder-6-project
jeżeli choć trochę Qt to możesz zrobić to za pomocą QNetworkAccessManager
BCB 6 ma Indy a tam jest IdHTTP więc w 3 sekundy to zrobisz:
Memo1->Text = IdHTTP1->Get("http://4programmers.net");
No na taka odpowiedz mialem nadzieje ale wyswietla mi blad ze IdHTTP1 undefined .... cos mam dodatkowo pobrac?
Przecież masz taki komponent na zakładce Indy Clients
no wlasnie nie mam ... musze to zainstalowac czy jak?
void pobierz()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init ();
if (curl)
{
curl_easy_setopt (curl, CURLOPT_URL, "http://google.pl");
res = curl_easy_perform (curl);
curl_easy_cleanup (curl);
}
Edit2->Text = res;
}
Taka funkcje zrobilem ale w ogole nie robi tego co bym chcial .... a chce zeby gdzies ten kod zrodlowy sie wyswietlal
To może ja zaproponuję jeszcze nie wspomniane URLDownloadToFile
IBindStatusCallBack - Jak uzyskać ProgessBar do funkcji UrlDownloadToFile
bardzo fajne ale to delhpi ... mi w c++ trzeba ....
CURLcode res; a nie ma toto żadnego toString(); czy coś? bo może w tym problem
ehe napisał(a):
CURLcode res; a nie ma toto żadnego toString(); czy coś? bo może w tym problem
No nie ma fakt ... a powinno byc? xd
Jesli moze byc w qt to masz. To jest glowna czesc sluzaca do pobrania kodu strony. Jak sie przyda to dobrze jak nie to nie xD
class MaxvideoHandler : public QObject
{
Q_OBJECT
public:
explicit MaxvideoHandler(QObject *parent = 0);
~MaxvideoHandler();
QByteArray getHtmlSource();
void setUrl(const QUrl url);
private:
QUrl url;
QByteArray htmlSource;
QNetworkAccessManager *manager;
QNetworkRequest *request;
QNetworkReply *reply;
signals:
void finished();
public slots:
void requestFinished(QNetworkReply*);
};
#include "maxvideohandler.h"
MaxvideoHandler::MaxvideoHandler(QObject *parent) :
QObject(parent)
{
request = new QNetworkRequest;
manager = new QNetworkAccessManager(this);
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply*)));
}
MaxvideoHandler::~MaxvideoHandler()
{
delete request;
delete manager;
}
void MaxvideoHandler::setUrl(const QUrl url)
{
this->url = url;
request->setUrl(url);
reply = manager->get(*request);
}
QByteArray MaxvideoHandler::getHtmlSource()
{
return htmlSource;
}
void MaxvideoHandler::requestFinished(QNetworkReply *reply)
{
htmlSource = reply->readAll();
emit(this->finished());
}
Przy uzyciu trzeba odebrac sygnal od klasy informujacy o zakonczeniu pracy. emit(this->finished());
Nie wiedzialem nawet ze jest cos takiego jak qt .... troche ciezko mi bedzie to zastosowac... przejze dokladnie ten kod i poeksperymentuje. Mam nadzieje ze ogarne.
MajQel napisał(a):
bardzo fajne ale to delhpi ... mi w c++ trzeba ....
URLDownloadToFile to WinAPI, Delphi nie jest wymagane, można użyć w zwykłym c++ bez żadnych dodatkowych bibliotek.
nie wiem jak tego uzyc ... chociaz wydaje mi sie najbardziej uzyteczne z tego wszystkiego ...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
URLDownloadToFile(
0,_T("http://classic.battle.net/war3/ladder/w3xp-ladders.aspx?Gateway=Northrend"),
_T("C:\temp.txt"),
0, 0);
}
Otoz mam cos takiego .... ale wyswietla mi sie blad
[Linker Error] Unresolved external 'URLDownloadToFileA' referenced from C:\USERS\NAWROT\DESKTOP\MICHAŁ\WLASNE PROGRAMY\STATS\UNIT1.OBJ
Jak sie pozbyc bledu??
Musisz zlinkować Urlmon.lib
.
a jak to mam zrobic?