Re[3]: Залогиниться на сайт
От: Gridmer Россия www.i-tt.ru
Дата: 21.01.05 21:36
Оценка:
Здравствуйте, 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 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.