PDA

Просмотр полной версии : Проблемы с WinInet.


Shaitan-Devil
14.10.2009, 18:58
Компилируется без проблем. В отладчике тоже проблем нет. Но не работает.

#include <iostream>
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")
using namespace std;
int main()
{
HINTERNET hInternet =::InternetOpen(
"Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);


HINTERNET hConnect=::InternetConnect(
hInternet,
"http://my.mail.ru/",
INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL,
INTERNET_SERVICE_HTTP, NULL, NULL);


HINTERNET hOpen=::HttpOpenRequest(
hConnect,
"POST",
"cgi-bin/auth",
NULL,
NULL,
(LPCSTR*)"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*",
INTERNET_FLAG_KEEP_CONNECTION,
NULL);



BOOL Send=::HttpSendRequest(
hOpen,
NULL,
0,
"page=http%3A%2F%2Fmy.mail.ru%2F&Login=test&Domain=mail.ru&Password=1234",
NULL
);
char szData[1024];
DWORD dwBytesRead;

BOOL IRead=::InternetReadFile(
hOpen,
szData,sizeof(szData)-1,
&dwBytesRead);
cout<<szData;

::InternetCloseHandle(hOpen);


::InternetCloseHandle(hConnect);

::InternetCloseHandle(hInternet);
system("PAUSE");
return 0;
}

slesh
14.10.2009, 23:08
Читай MSDN и там хорошо описано какие параметры передаются функциям

Вот тока основные баги, но это тебе не поможет потому что много глюков связанных с HTTP проколом. Вообще не поленись и открой 5005 статей по делфи. там всё есть + 10 раз уже тут обсуждалось это

HINTERNET hConnect=::InternetConnect(
hInternet,
"my.mail.ru",
INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL,
INTERNET_SERVICE_HTTP, NULL, NULL);

.............
"/cgi-bin/auth",

..................

Shaitan-Devil
15.10.2009, 05:11
Я не пишу на дельфи=\. И если 10 раз обсуждалось, где можно почитать. Гугл ничего не нашел.

slesh
15.10.2009, 10:52
Delphi и С никакой разницы, потому что это WinAPI

dnd
16.10.2009, 23:01
#include <iostream>
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")
using namespace std;
int main()
{
HINTERNET hInternet =::InternetOpen(
"Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);


HINTERNET hConnect=::InternetConnect(
hInternet,
"my.mail.ru",
INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL,
INTERNET_SERVICE_HTTP, NULL, NULL);


HINTERNET hOpen=::HttpOpenRequest(
hConnect,
"POST",
"cgi-bin/auth",
NULL,
NULL,
(LPCSTR*)"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*",
INTERNET_FLAG_KEEP_CONNECTION,
NULL);



BOOL Send=::HttpSendRequest(
hOpen,
"Content-Type: application/x-www-form-urlencoded",
-1L,
"page=http%3A%2F%2Fmy.mail.ru%2F&Login=test&Domain=mail.ru&Password=1234",
strlen("page=http%3A%2F%2Fmy.mail.ru%2F&Login=test&Domain=mail.ru&Password=1234\r\n")
);
char szData[1024];
DWORD dwBytesRead;

BOOL IRead=::InternetReadFile(
hOpen,
szData,sizeof(szData)-2,
&dwBytesRead);

cout<<szData;

::InternetCloseHandle(hOpen);


::InternetCloseHandle(hConnect);

::InternetCloseHandle(hInternet);
system("PAUSE");
return 0;
}
п.с. на рсдне неплохая статья была..

Shaitan-Devil
06.11.2009, 18:37
Да я разобрался уже. С кодом проблем не было. Были проблемы с форматом передачи данных).