Форум программистов, компьютерный форум CyberForum.ru

Слеш и hInternet - C++

Восстановить пароль Регистрация
 
ЛеЖиК)
 Аватар для ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 630
07.10.2011, 17:02     Слеш и hInternet #1
Вообщем есть такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
int main(int argc, char* argv[])
{
    setlocale(LC_CTYPE, ""); //русский текст
    
    strcpy(url,"ya.ru");
    readsite(url);
 
    
 
 
 
 
 
 
 
    return 0;
}
bool readsite(char *url)
{
          bool ok = false;
       // Инициализация WinInet
        HINTERNET hInternet = ::InternetOpen(
                TEXT("WinInet Test"),
                INTERNET_OPEN_TYPE_PRECONFIG,
                NULL,
                NULL,
                0);
 
        if (hInternet != NULL)
        {
                // Открывает HTTP сессию
                HINTERNET hConnect = ::InternetConnect( hInternet, (LPCSTR)url,  INTERNET_DEFAULT_HTTP_PORT,  NULL, NULL,INTERNET_SERVICE_HTTP,0,1u);
 
                if (hConnect != NULL)
                {
                        // открываем запрос
                        HINTERNET hRequest = ::HttpOpenRequest(
                                hConnect,
                                TEXT("GET"),
                                TEXT(""), 
                                NULL,
                                NULL,
                                0,
                                INTERNET_FLAG_KEEP_CONNECTION,
                                1);
 
                        if (hRequest != NULL)
                        {
                                // посылаем запрос
                                BOOL bSend = ::HttpSendRequest(hRequest, NULL, 0, NULL, 0);
                                if (bSend)
                                {
                                       
                  
                                                for (;;)
                                                {
                                                        // чиаем данные
                                                        char szData[1024];
                                                        DWORD dwByteRead;
                                                        BOOL bRead = ::InternetReadFile(
                                                                hRequest,
                                                                szData,
                                                                sizeof(szData)-1,
                                                                &dwByteRead);
 
                                                        // выход из цикла при ошибке или завершения
                                                        if (bRead == FALSE || dwByteRead == 0)
                                                                break;
 
                                                        // сохраняем результат
                                                        
                                                        szData[dwByteRead] = 0;
                                                        strcpy(koD.kod_HTML,szData);
                                                        Kod.push_back(koD);
 
                                                        
 
                                                        ok = true;
                                                }
                                                
 
 
                                }
                                else 
                                ERR"Error bsend";
                                // закрыываем запрос
                                ::InternetCloseHandle(hRequest);
                        }
                        else 
                            ERR"Error Request";
                        // закрываем сессию
                        ::InternetCloseHandle(hConnect);
                }
                else 
                    ERR"Error connect";
                // закрываем WinInet
                ::InternetCloseHandle(hInternet);
        }
        else 
            ERR"Error iternet";
 
 
        return 1;
}
Если пятая строка будет вида strcpy(url,"ya.ru"); то все шикарно работет
если же сделать вида strcpy(url,"ya.ru/"); то выдает ошибку(bSend=0)
так же с другими url где используется слеш
Как с этим бороться?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
07.10.2011, 17:20     Слеш и hInternet #2
Как с этим бороться?
Не использовать слеш.
ЛеЖиК)
 Аватар для ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 630
07.10.2011, 17:28  [ТС]     Слеш и hInternet #3
а как мне обратиться к адресу например http://auto.yandex.ru/models.xml?mark=DAEWOO
(случайный адрес для примера взял)
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
07.10.2011, 17:35     Слеш и hInternet #4
Самый простой вариант: InternetOpenUrl

Добавлено через 5 минут
Либо чтобы не переписывать код:
C++
1
2
3
4
5
6
7
8
9
HINTERNET hRequest = ::HttpOpenRequest(
                                hConnect,
                                TEXT("GET"),
                                TEXT("/models.xml"), 
                                NULL,
                                NULL,
                                0,
                                INTERNET_FLAG_KEEP_CONNECTION,
                                1);
Тогда нужно еще послать параметры.
ЛеЖиК)
 Аватар для ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 630
07.10.2011, 18:10  [ТС]     Слеш и hInternet #5
gooseim, спасибо, помогло
код доже сократился в два раза
Yandex
Объявления
07.10.2011, 18:10     Слеш и hInternet
Ответ Создать тему
Опции темы

Текущее время: 00:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru