上面是GET数据的,下面是POST数据的,主要修改代码如下
- #include <Windows.h>
- #include <Wininet.h>
- #include <stdio.h>
- #pragma comment(lib,"wininet.lib")
- #define TRANSFER_SIZE 1024
- int main()
- {
- int nRet = 1;
- LPCTSTR lpszAgent = "WinInetGet/0.1";
- HINTERNET hInternet = InternetOpen(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
- if( ! hInternet ) {
- return 1;
- }
- LPCTSTR lpszServerName = "192.168.22.199"; //设置server
- INTERNET_PORT nServerPort = INTERNET_DEFAULT_HTTPS_PORT; // HTTPS端口443
- LPCTSTR lpszUserName = NULL; //无登录用户名
- LPCTSTR lpszPassword = NULL; //无登录密码
- DWORD dwConnectFlags = 0;
- DWORD dwConnectContext = 0;
- HINTERNET hConnect = InternetConnect(hInternet,
- lpszServerName, nServerPort,
- lpszUserName, lpszPassword,
- INTERNET_SERVICE_HTTP,
- dwConnectFlags, dwConnectContext);
- if( ! hConnect ) {
- return 1;
- }
- LPCTSTR lpszVerb = "POST";
- LPCTSTR lpszObjectName = "/vpn/userlogin.php";
- LPCTSTR lpszVersion = NULL; // 默认.
- LPCTSTR lpszReferrer = NULL; // 没有引用页
- LPCTSTR *lplpszAcceptTypes = NULL; // Accpet所有类型.
- DWORD dwOpenRequestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |
- INTERNET_FLAG_KEEP_CONNECTION |
- INTERNET_FLAG_NO_AUTH |
- INTERNET_FLAG_NO_COOKIES |
- INTERNET_FLAG_NO_UI |
- //设置启用HTTPS
- INTERNET_FLAG_SECURE |
- INTERNET_FLAG_IGNORE_CERT_CN_INVALID|
- INTERNET_FLAG_RELOAD;
- DWORD dwOpenRequestContext = 0;
- //初始化Request
- HINTERNET hRequest = HttpOpenRequest(hConnect, lpszVerb, lpszObjectName, lpszVersion,
- lpszReferrer, lplpszAcceptTypes,
- dwOpenRequestFlags, dwOpenRequestContext);
- if( ! hRequest ) {
- goto GOTO_EXIT;
- }
- bool bResult = false;
- char szHeaderBuff[TRANSFER_SIZE] = {'/0'};
- int nHeaderSize = sprintf(szHeaderBuff, "%s", "Content-Type:application/x-www-form-urlencoded");
- char szReqBuff[TRANSFER_SIZE] = {'/0'};
- int nReqSize = sprintf(szReqBuff, "user=%s&pass=%s", "test", "test");
- //发送Request
- bResult = HttpSendRequest(hRequest, szHeaderBuff, nHeaderSize, szReqBuff, nReqSize);
- if ( ! bResult && GetLastError() == ERROR_INTERNET_INVALID_CA )
- {
- DWORD dwFlags;
- DWORD dwBuffLen = sizeof(dwFlags);
- InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
- dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
- InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags) );
- bResult = HttpSendRequest(hRequest, szHeaderBuff, nHeaderSize, szReqBuff, nReqSize);
- }
- if( ! bResult )
- {
- DWORD dwError = GetLastError();
- printf("%d/n", dwError);
- goto GOTO_EXIT;
- }
- //获得HTTP Response Header信息
- char szBuff[TRANSFER_SIZE];
- DWORD dwReadSize = TRANSFER_SIZE;
- bResult = HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, szBuff, &dwReadSize, NULL);
- if( ! bResult ) {
- goto GOTO_EXIT;
- }
- szBuff[dwReadSize] = '/0';
- printf("%s/n", szBuff);
- //HTTP Response 的 Body
- DWORD dwBytesAvailable;
- bResult = InternetQueryDataAvailable(hRequest, &dwBytesAvailable, 0, 0);
- if( ! bResult ) {
- goto GOTO_EXIT;
- }
- if( dwBytesAvailable > TRANSFER_SIZE )
- {
- printf("tool long %d /n", GetLastError(), dwBytesAvailable);
- goto GOTO_EXIT;
- }
- DWORD dwBytesRead;
- bResult = InternetReadFile(hRequest, szBuff, dwBytesAvailable, &dwBytesRead);
- if( ! bResult ) {
- goto GOTO_EXIT;
- }
- szBuff[dwBytesRead] = '/0';
- printf("%s/n", szBuff);
- nRet = 0;
- GOTO_EXIT:
- if( hRequest ) {
- InternetCloseHandle(hRequest);
- }
- if( hConnect ) {
- InternetCloseHandle(hConnect);
- }
- if( hInternet ) {
- InternetCloseHandle(hInternet);
- }
- return nRet;
- }