Hep на HttpOpenRequest () и другие функции Wininet - PullRequest
1 голос
/ 27 ноября 2011

Я все еще занимаюсь сохранением случайных веб-страниц из Интернета. После небольшого изменения кода (вызывающего HttpOpenRequest () по-другому) программа успешно загрузила страницу, которая была перенаправлена. Но я все еще не могу получить любую веб-страницу, которую я хочу.

Пример:

#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#include <fstream>
#include <cstring>

#define SIZE 128


int main()

{

    HINTERNET Initialize,Connection,File;
    DWORD dwBytes;

    char ch;
    Initialize = InternetOpen("HTTPGET",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);

    Connection = InternetConnect(Initialize,"http://www.rottentomatoes.com",INTERNET_DEFAULT_HTTP_PORT,
    NULL,NULL,INTERNET_SERVICE_HTTP,0,0);


    //File = HttpOpenRequest(Connection,NULL,"/index.html",NULL,NULL,NULL,0,0);

/**/

    File = HttpOpenRequest(Connection,
                                "GET",
                                "/index.jsp",
                                "HTTP/1.1",
                                NULL, NULL,
                                INTERNET_FLAG_RELOAD | INTERNET_FLAG_EXISTING_CONNECT, 0);

    if(HttpSendRequest(File,NULL,0,NULL,0))
    {
        std::ofstream webSource;
        //webSource.open(strcat(argv[1], "__.html"));
        webSource.open("a.html");

        while(InternetReadFile(File,&ch,1,&dwBytes))
        {
            if(dwBytes != 1)break;
            webSource << ch;
        }
        webSource.close();
    }

    InternetCloseHandle(File);
    InternetCloseHandle(Connection);
    InternetCloseHandle(Initialize);

    return 0;
}

Но когда я пытаюсь загрузить "http://www.rottentomatoes.com/m/1209933-puss_in_boots/",, я не могу, то есть программа работает меньше секунды и не выдает выходной файл.

В чем здесь проблема, какая функция вызывает это?

1 Ответ

1 голос
/ 30 ноября 2011

Попробуйте удалить "http://" из примера URL.

Connection = InternetConnect(Initialize,"www.rottentomatoes.com", INTERNET_DEFAULT_HTTP_PORT,
    NULL,NULL,INTERNET_SERVICE_HTTP,0,0);

и убедитесь, что имя файла в HttpOpenRequest является действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...