많은 시행착오 끝에....성공했다. ㅠㅠ
다이얼로그에 웹브라우저 컨트롤인 CWebBrowser2를 삽입하고,
CWebBrowser2 에 쿠키를 설정하려고 했으나 실패(CInternetSession과 연결 시도 실패)하고,
결국 POST 방식으로 하려했으나....여러번 실패 끝에 성공을 하였다.
Post Data를...일반 문자열 BSTR이 아닌 VT_ARRAY로 해야하는 것을 간신히 찾았다.
참고로 m_ctlWebBrowser의 형은 다음과 같다.
CWebBrowser2 m_ctlWebBrowser;
--------------- 소스 --------------- Written by dukgun.com(덕근닷컴)
CString strUrl = _T("http://www.dukgun.com/test.asp");
CString strHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n"); // _T("")으로 해도 됨
CString strPostData = _T("id=yunskorea&passwd=1234"); // POST 데이터
// HTTP 헤더
VARIANT vHeader;
vHeader.vt = VT_BSTR;
vHeader.bstrVal = strHeader.AllocSysString();
// POST 데이터 변환
SAFEARRAY FAR *sfPost = NULL;
SAFEARRAYBOUND bound;
bound.cElements = strPostData.GetLength();//_tcslen(strPost);
bound.lLbound = 0;
sfPost = SafeArrayCreate(VT_UI1, 1, &bound);
for (long lIndex = 0;lIndex < (signed)bound.cElements;lIndex++)
{
SafeArrayPutElement(sfPost, &lIndex, strPostData.GetBuffer(bound.cElements)+lIndex);
}
strPostData.ReleaseBuffer();
VARIANT vaPost;
vaPost.vt = VT_ARRAY;
vaPost.parray = sfPost;
m_ctlWebBrowser.Navigate(m_strURL,0,NULL,&vaPost,&vHeader);
SafeArrayDestroy(sfPost);
--------------------------
POST 데이터를 VT_ARRAY형이 아닌 VT_BSTR로 할 경우...
POST 방식이 아닌 GET 방식으로 호출되어, POST 데이터를 아예 인식 못하게 된다.
-- Written by dukgun.com(덕근닷컴) --
'프로그래밍' 카테고리의 다른 글
프로그래밍을 하는 PC에서는...되도록이면 윈도우 계정을 영문으로.. (5) | 2006.04.29 |
---|---|
C, C++의 포인터...무조건 악몽만은 아니다. (0) | 2006.04.11 |
(MFC 6.0) CInternetSession::SetCookie의 첫번째 파라미터때문에 발생했던 버그 (1) | 2006.01.16 |
[Visual C++]data_seg pragma를 이용하여 DLL과 데이터(메모리) 공유하기 (2) | 2005.12.27 |
Microsoft 프로그래밍 언어 4종 비교 분석 (1) | 2005.01.20 |