WinInet 관련자료

1.요약

IE(Internet Explorer)같은 웹 브라우저를 이용하지 않고, 서버측에 있는 코드를 직접호출하는 방법에 대해서 알아보도록 합니다.


2.본문

웹 서버의 서버 코드를 직접실행하는 방법은 여러가지 단계를 거쳐야 합니다.

'서버 접근 --> 연결 --> 접속 확인 --> 메세지 보내기 --> 연결 닫기'

위의 방법을 다시 함수로 나누어 보면

(1) 서버 접근 : InternetOpen
(2) 서버 연결 : InternetConnect
(3) 접속 확인 : HttpOpenRequest
(4) 메세지 전송 : HttpSendRequest
(5) 연결 닫기 : InternetCloseHandle

이러한 과정을 거치는 작업에서 여럽다고 느껴지는 부분은 해당 함수에 전달해야 하는 인자값들인데, 다음의 예제를 보시면 더욱 이해가 빠르실거라고 생각합니다.

예전에, 이와 관련된 문서를 찾던중 가장 근접했던것이 VB 소스였는데, 아마 Platform SDK를 검색해 보시면 관련 예제를 찾으실 수 있을 것입니다.


3.예제



#include <Wininet.h>                // 필요한 헤더 파일
#pragma comment(lib, "wininet")     // 필요한 lib 파일


// 예제 함수

void CSendMsgToWebServerDlg::OnSend()
{

   // -----------------
   // Web 서버에 메세지 전송하기
   // -----------------
   // [ 중요 데이터 변수]
   //  - szServer : 서버의 주소(예, http://www.devpia.com)
   //  - szObject : 호출 문장 (예, /test/test.php3?table=t_talk&page=2)
   
   // 변수 선언 및 초기화
   HINTERNET hOpen, hConnect, hReq;
   INTERNET_PORT dwPort = INTERNET_INVALID_PORT_NUMBER;
   DWORD  dwFlags = INTERNET_FLAG_RELOAD |
       INTERNET_FLAG_NO_CACHE_WRITE |
       INTERNET_FLAG_KEEP_CONNECTION;
   CHAR szServer[256], szObject [20000];
   TCHAR szAccept[] = "*/*";
   LPSTR AcceptTypes[2]={0};
   
/*
   만약 다음의 주소를 호출하고자 한다면
   다음의 예와 같이 szServer 와 szObject를 나누어서 보내야 합니다.

   http://www.devpia.com/test/test.php3?table=t_talk&page=2    
*/

   strcpy(szServer, "http://www.devpia.com");
   wsprintf(szObject, "/test/test.php3?table=t_talk&page=2");
   
   // ~ 변수 선언 및 초기화
   
   
   // 핵심 함수 Call
   hOpen = InternetOpen (NULL,  LOCAL_INTERNET_ACCESS , NULL, 0, 0);
   hConnect = InternetConnect ( hOpen, szServer , dwPort, "",  "", INTERNET_SERVICE_HTTP, 0  , 0);
   
   hReq = HttpOpenRequest (hConnect, "GET", szObject, HTTP_VERSION, "",
       (LPCTSTR*) AcceptTypes, dwFlags ,0 );
   HttpSendRequest (hReq, NULL, 0, NULL, 0);
   
   
   // ~ 핵심 함수 Call
   
   
   // Handle 닫기
   InternetCloseHandle (hReq);
   InternetCloseHandle (hConnect);
   InternetCloseHandle (hOpen);
   // ~ Handle 닫기

}

2006/09/12 20:56 2006/09/12 20:56

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요