close

Trust Me!! Trust You!!


  • Blog
  • Local Log
  • Tag Cloud
  • Key Log
  • Guestbook
  • RSS Feed
  • Write a Post
  • Admin

혹시 블로그 스킨이 깨져 보이시나요? 최신버전의 Internet Explorer(Windows용), Opera, Firefox를 사용해보세요.

MFC를 이용한 웹페이지에 File UpLoad 방법( HTTPS)

웹 프로그래밍
2007/05/30 15:06
 

안녕하세요


WinINet을 이용하여 HTTPS를 이용하려고 합니다.

InternetConnect의 파라미터중 INTERNET_DEFAULT_HTTPS_PORT가 있어서

사용하려했는데 HTTPS 통신을 하지 않습니다.

InternetOpenUrl을 이용해서 URL에 https://... 를 줘서 해봤는데

HTTPS는 동작하는데 Get 방식으로 동작합니다.

필요한건 HTTPS에서 POST로 데이터를 보내는건데

어떤방법이 있을지 가르쳐주시면 고맙겠습니다...

이 글에 평점 주기:  
  2005-11-29 오전 10:20:56   /  번호: 551683  / 평점:  (1.0)  
 HTTP / POST 김대홍 / kyh0511  
김대홍님께 메시지 보내기    김대홍님의 블로그 가기   

//---------------------------------------------------------------------------||

//-- Post_Query

//---------------------------------------------------------------------------||

char * Post_Query (char * szURL, char * szPostData)

{

    CAString aString;

    aString = "";

 

    HINTERNET hSession = ::InternetOpen ("TestOpen", 0, NULL, NULL, NULL);

    if (hSession)

    {

        // crack url..

        char szExtraInfo    [MAX_PATH];

        char szHostName     [MAX_PATH];

        char szPassword     [MAX_PATH];

        char szScheme       [MAX_PATH];

        char szUrlPath      [MAX_PATH * 4];

        char szUserName     [MAX_PATH];

 

        URL_COMPONENTS      urlcomponent;

        urlcomponent.dwExtraInfoLength  = MAX_PATH;

        urlcomponent.dwHostNameLength   = MAX_PATH;

        urlcomponent.dwPasswordLength   = MAX_PATH;

        urlcomponent.dwSchemeLength     = MAX_PATH;

        urlcomponent.dwStructSize       = sizeof(URL_COMPONENTS);

        urlcomponent.dwUrlPathLength    = MAX_PATH * 4;

        urlcomponent.dwUserNameLength   = MAX_PATH;

        urlcomponent.lpszExtraInfo      = szExtraInfo;

        urlcomponent.lpszHostName       = szHostName;

        urlcomponent.lpszPassword       = szPassword;

        urlcomponent.lpszScheme         = szScheme;

        urlcomponent.lpszUrlPath        = szUrlPath;

        urlcomponent.lpszUserName       = szUserName;

        urlcomponent.nPort              = 0;

        //urlcomponent.nScheme = 0;

        ::InternetCrackUrl(szURL, sizeof(URL_COMPONENTS), NULL, &urlcomponent);

        // download user

        HINTERNET hConnect = ::InternetConnect (hSession,

                                                urlcomponent.lpszHostName,

                                                urlcomponent.nPort,

                                                urlcomponent.lpszUserName,

                                                urlcomponent.lpszPassword,

                                                urlcomponent.nScheme,

                                                NULL,

                                                NULL);

        if (hConnect)

        {

            // connected server..

            HINTERNET hObject = ::HttpOpenRequest ( hConnect,

                                                    szPostData == NULL ? "GET" : "POST",

                                                    urlcomponent.lpszUrlPath,

                                                    "HTTP/1.1",

                                                    "text/*" ,

                                                    NULL,

                                                    INTERNET_FLAG_RELOAD,

                                                    NULL);

            if (hObject)

            {

                // post header

                char szLen[MAX_PATH];

                CAString aHeader;

                aHeader = "";

 

                wsprintf(szLen, "%d", szPostData == NULL ? 0 : strlen(szPostData));

                aHeader +=_T("Accept: text/*\r\n");

                aHeader +=_T("User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;* Windows NT)\r\n");

                aHeader +=_T("Content-type: application/x-www-form-urlencoded\r\n");

                aHeader +=_T("Content-length: ");

                aHeader += szLen;

                aHeader +=_T("\r\n\n");

               

                ::HttpAddRequestHeaders(hObject,(LPCTSTR)aHeader.m_pString,-1L,HTTP_ADDREQ_FLAG_ADD);

 

                // post data..

                if (szPostData)

                {

                    ::HttpSendRequest(hObject,NULL,0L,(LPVOID)szPostData,strlen(szPostData));

                }

                else

                {

                    ::HttpSendRequest(hObject,NULL,0L,NULL,0);

                }

 

                // open object

                char szBuffer[1024];

                DWORD dwRead = 0;

                //DWORD dwWrite = 0;

               

                while (::InternetReadFile(hObject, szBuffer, 1023, &dwRead) &&

                        dwRead > 0)

                {

                    szBuffer[dwRead] = 0;

                    aString += szBuffer;

                    Sleep(1);

                }

                ::InternetCloseHandle(hObject);

                //bDownLoad = TRUE;

            }

        }

    }

    if (aString.m_pString && aString.GetLength() > 0)

    {

        char * pReturn = new char[aString.GetLength() + 1];

        strcpy(pReturn, aString.m_pString);

        return pReturn;

    }

    return 0;

}

 

 

저는 이렇게 만들어서 썼었는데, 대충 잘 동작하는 것 같습니다.

요구사항에 맞게 수정해서 쓰셔도 될 듯 합니다.


    CAString aString;


과 같은 것들은 자체 라이브러리이니.. CString 이나 char * 등으로 맞게 변환해서 쓰시면 됩니다.


이 글에 평점 주기:  
  2005-11-29 오전 11:45:22   /  번호: 551710  / 평점:  (-)  
 안되는데요...ㅠㅠ 김연준 / longdari  
김연준님께 메시지 보내기    김연준님의 블로그 가기   


님이 말씀하신대로 HttpAddRequestHeaders 함수를 추가했는데 제대로 동작을 안합니다.

어디가 틀렸을까요...?



    HINTERNET hInternetRoot = InternetOpen( "TestWinINet",

                                            INTERNET_OPEN_TYPE_PRECONFIG,

                                            NULL,

                                            NULL,

                                            0);


    HINTERNET hInternetConnect = InternetConnect(   hInternetRoot,

                                                    "211.111.111.111",

                                                    INTERNET_DEFAULT_HTTPS_PORT,

                                                    "",

                                                    "",

                                                    INTERNET_SERVICE_HTTP,

                                                    0,

                                                    0);


    HINTERNET hOpenRequest = HttpOpenRequest(   hInternetConnect,

                                                "POST",

                                                "/jsp/trcs/portal/kk2.jsp",

                                                HTTP_VERSION,

                                                "",

                                                NULL,

                                                INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID,

                                                0);


    char szPostData[2048] = {0};

    lstrcpy(szPostData, "input1=aaa");


    // post header

    char szLen[MAX_PATH] = {0};

    char szHeader[2048] = {0};


    wsprintf(szLen, "%d", lstrlen(szPostData));

    lstrcpy(szHeader, "Accept: text/*\r\n");

    lstrcat(szHeader, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;* Windows NT)\r\n");

    lstrcat(szHeader, "Content-type: application/x-www-form-urlencoded\r\n");

    lstrcat(szHeader, "Content-length: ");

    lstrcat(szHeader, szLen);

    lstrcat(szHeader, "\r\n\n");


    HttpAddRequestHeaders(hOpenRequest, szHeader, -1L, HTTP_ADDREQ_FLAG_ADD);


    BOOL bSendRequest = HttpSendRequest(hOpenRequest,

                                        NULL,

                                        0,

                                        szPostData,

                                        lstrlen(szPostData));


    char szBuf[2048] = {0};

    DWORD dwSize = 0;

    BOOL bRead = InternetReadFile(  hOpenRequest,

                                    szBuf,

                                    sizeof(szBuf),

                                    &dwSize);


    MessageBox(szBuf);


    BOOL bRet = InternetCloseHandle(hOpenRequest);

    bRet = InternetCloseHandle(hInternetConnect);

    bRet = InternetCloseHandle(hInternetRoot);


이 글에 평점 주기:  
  2006-05-12 오후 6:09:32   /  번호: 576410  / 평점:  (-)  
         님이 말씀하신대로 HttpAddRequestHeaders 함수를 추가했는데 제대로 동작을 안합니다. 김동환 / htjulia  
김동환님께 메시지 보내기    김동환님의 블로그 가기   

 님이 말씀하신대로 HttpAddRequestHeaders 함수를 추가했는데 제대로 동작을 안합니다.

어디가 틀렸을까요...?



    HINTERNET hInternetRoot = InternetOpen( "TestWinINet",

                                            INTERNET_OPEN_TYPE_PRECONFIG,

                                            NULL,

                                            NULL,

                                            0);


    HINTERNET hInternetConnect = InternetConnect(   hInternetRoot,

                                                    "211.111.111.111",

                                                    INTERNET_DEFAULT_HTTPS_PORT,

                                                    "",

                                                    "",

                                                    INTERNET_SERVICE_HTTP,

                                                    0,

                                                    0);


    HINTERNET hOpenRequest = HttpOpenRequest(   hInternetConnect,

                                                "POST",

                                                "/jsp/trcs/portal/kk2.jsp",

                                                HTTP_VERSION,

                                                "",

                                                NULL,

                                                INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID,

                                                0);

 /*

    이부분에 internalSetoption을 주셔야합니다.

 

      dwFlags = 0 ;

      dwFlags = SECURITY_FLAG_IGNORE_UNKNOWN_CA   |

            SECURITY_FLAG_IGNORE_REVOCATION              |

            SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP   |

            SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS |

            SECURITY_FLAG_IGNORE_CERT_DATE_INVALID   |

            SECURITY_FLAG_IGNORE_CERT_CN_INVALID;

 

      InternetSetOption (hOpenRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));


위의 코딩을 넣어서 해보심 될겁니다....

관련된 FLAG들은 찾아 보시고요...

즐코 하셈... ^^

*/



    char szPostData[2048] = {0};

    lstrcpy(szPostData, "input1=aaa");


    // post header

    char szLen[MAX_PATH] = {0};

    char szHeader[2048] = {0};


    wsprintf(szLen, "%d", lstrlen(szPostData));

    lstrcpy(szHeader, "Accept: text/*\r\n");

    lstrcat(szHeader, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;* Windows NT)\r\n");

    lstrcat(szHeader, "Content-type: application/x-www-form-urlencoded\r\n");

    lstrcat(szHeader, "Content-length: ");

    lstrcat(szHeader, szLen);

    lstrcat(szHeader, "\r\n\n");


    HttpAddRequestHeaders(hOpenRequest, szHeader, -1L, HTTP_ADDREQ_FLAG_ADD);


    BOOL bSendRequest = HttpSendRequest(hOpenRequest,

                                        NULL,

                                        0,

                                        szPostData,

                                        lstrlen(szPostData));


    char szBuf[2048] = {0};

    DWORD dwSize = 0;

    BOOL bRead = InternetReadFile(  hOpenRequest,

                                    szBuf,

                                    sizeof(szBuf),

                                    &dwSize);


    MessageBox(szBuf);


    BOOL bRet = InternetCloseHandle(hOpenRequest);

    bRet = InternetCloseHandle(hInternetConnect);

    bRet = InternetCloseHandle(hInternetRoot);

이올린에 북마크하기
No received trackback. / No comment.

Trackback Address :: http://viper150.cafe24.com/trackback/45

You can also say.

Prev 1 ... 254 255 256 257 258 259 260 261 262 ... 298 Next
블로그 이미지
이것저것 불펌금지도 퍼다가 담습니다. 외부에 비공개된 페이지 입니다. By. 어른왕자

카테고리

  • 전체 (298)
    • 사는 이야기 (115)
    • 웹 프로그래밍 (102)
    • App 프로그래밍 (22)
    • IT 뉴스&기타 (22)
    • 박한별 (4)
    • 역사&기타지식 (9)

태그목록

  • 경찰
  • LG V30
  • 다이알로그
  • 배치
  • 유머
  • 기린
  • 이클립스 루트
  • 전업남편
  • 초경합금
  • 이클립스 루트 디렉토리
  • 육이오
  • 관상
  • 토렌트
  • mysql
  • 파코즈
  • 남자성향
  • 전산공무원
  • BrowserHelperObjects
  • 여자
  • 착각
  • WM_CONCAT
  • base target
  • vga benchmark
  • 남편
  • 몰카
  • 잃은것
  • 자바스크립트 마우스 막기
  • 사회초년생
  • java api
  • 건강보험

최근에 올라온 글

  • 보험사의 조정신청 대응방법.
  • 어느 천재의 앞선 시선.
  • [병맛더빙] 누구게..... (1)
  • 韓경제 `회색 코뿔소` 상황...
  • SVN Connector 설치 URL.
  • 군대를 가지 않는 서울대생.
  • “운은 하늘의 귀여움 받는...
  • 목장에서 알바하다가 캐스...
  • [펌]믿고 거르는 관상.
  • 하루에 1세트씩 하면 좋다...

최근에 달린 댓글

  • <p align="center"><a href="h... 라임애드 02/14
  • <div style="OVERFLOW: hidden... 고사니 02/12
  • <p align="center"><a href="h... 라임정보 02/07
  • <p><img src="https://i.imgur... 브레드 01/22
  • <p><img src="https://i.imgur... 브레드 01/22

최근에 받은 트랙백

  • công ty may đồng phục. công ty may đồng phục 01/08
  • Israelnightclub`s recent blo... Israelnightclub`s recent blo.. 01/06
  • Suggested Browsing. Suggested Browsing 01/06
  • similar site. similar site 01/06
  • לאתר הבית שלנו. לאתר הבית שלנו 01/06

글 보관함

  • 2019/03 (1)
  • 2018/12 (1)
  • 2018/09 (1)
  • 2018/08 (1)
  • 2018/02 (1)

달력

«   2021/02   »
일 월 화 수 목 금 토
  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            

링크

  • Total : 263342
  • Today : 2
  • Yesterday : 29
Tattertools
Eolin
rss

어른왕자's blog is powered byTattertools1.1.2.2 : Animato