Здравствуйте. Такая ситуация:
Мне нужно при надатии на кнопку в диалоге
прочитать информацию с какого-нибудь сайта(HTML код).
Я читаю HTML код построчно и добавляю его в ListBox.
Делаю так:
void CMyDlg::OnButton1()
{
CInternetSession* pInternetSession;
pInternetSession=new CInternetSession;
if(!pInternetSession)
{
AfxMessageBox("не удалось подключится", MB_OK);
return;
}
CStdioFile* pFile=NULL;
pFile=pInternetSession->OpenURL(CString("http://www.yandex.ru"));// например yandex
CString stLine;
while (pFile->ReadString(stLine))
{
m_List.AddString(stLine);
}
UpdateData(false);
pFile->Close();
pInternetSession->Close();
}
Но перед тем, как добраться до этой страницы сайта,
необходимо залогиниться на сайте (ввести логин и пароль).
Как можно это сделать программно?
Понимаю, что вопрос не совсем
по теме. Может подскажете тогда, в каком разделе форума
надо его задать....
Заранее благодарен...
CInternetSession session;
CHttpConnection* pConnection=session.GetHttpConnection(pstrServer,dwFlags,nPort,pstrUserName,pstrPassword);
CHttpFile* pFile1=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);
pFile1->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strParams, strParams.GetLength());
pFile1->Read(...);
...

... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, Gridmer, Вы писали:
G>G>CInternetSession session;
G>CHttpConnection* pConnection=session.GetHttpConnection(pstrServer,dwFlags,nPort,pstrUserName,pstrPassword);
G>CHttpFile* pFile1=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);
G>pFile1->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strParams, strParams.GetLength());
G>pFile1->Read(...);
G>...
G>
G> ;)
Спасибо.
Только у меня несколько вопросов:
1. Я имею дело с методом POST. Тогда мне вместо CHttpConnection::HTTP_VERB_GET
следует поставить CHttpConnection::HTTP_VERB_POST?
2. Что значат параметры:
strObject
(LPVOID)(LPCTSTR)strParams
strParams.GetLength()???
Спасибо
Здравствуйте, pominub, Вы писали:
P>Спасибо.
P>Только у меня несколько вопросов:
P>1. Я имею дело с методом POST. Тогда мне вместо CHttpConnection::HTTP_VERB_GET
P>следует поставить CHttpConnection::HTTP_VERB_POST?
P>2. Что значат параметры:
P> strObject
P>(LPVOID)(LPCTSTR)strParams
P> strParams.GetLength()???
P>Спасибо
Не хотелось бы MSDN цитировать, да лучше я и объяснить не смогу. Лучше посмотрите на код:
const int MAXBUF=524288;
...
CString LoadFile(const CString& URL, const CString& Login, const CString& Password)
{
char data[MAXBUF];
UINT nBytesRead = 0;
CInternetSession session;
CHttpConnection* pConnection;
CHttpFile* pFile1=NULL;
INTERNET_PORT nPort;
DWORD serviceType;
CString strServer,strObject;
AfxParseURL(URL,serviceType,strServer,strObject,nPort);
CString strParams="";
//strParams заполняется для POST запроса
try {
pConnection=session.GetHttpConnection(strServer,nPort,Login,Password);
pFile1=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);
//или pFile1=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject);
BOOL result = pFile1->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strParams, strParams.GetLength());
nBytesRead+=pFile1->Read(data+nBytesRead, 1024);
int old=1;
while(old != 0) {
old=pFile1->Read(data+nBytesRead, 1024);
nBytesRead+=old;
}
data[nBytesRead] = '\0';
}
catch(CInternetException* e) {
e->Delete();
//....
}
pFile1->Close();
if(pFile1) delete pFile1;
pConnection->Close();
if(pConnection) delete pConnection;
session.Close();
return data;
}
Так как пишу по памяти, возможны баги. Поэкспериментируйте и Вам сразу все станет понятно.
... << Rsdn@Home 1.1.4 beta 1 >>