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)

태그목록

  • 정부
  • BrowserHelperObjects
  • 주차
  • 국가통계포털
  • 트윅
  • 픽슬러
  • substring
  • CD케이스
  • 획갈림
  • 우문술
  • pdf
  • 환상의 커플
  • XSS
  • V30
  • 계산
  • 조폭영화
  • 오지호
  • plugin
  • 커플
  • 텔레비젼
  • C
  • kbs
  • 한예슬
  • ultraeditor
  • 실시간tv
  • 한글컨트롤
  • 굴욕
  • 락산
  • 광개토대왕
  • 공권력

최근에 올라온 글

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

최근에 달린 댓글

  • 여성흥분제팝니다 24시간 전... 정력제 04/18
  • 유벤투스의 스타 공격수, 크리... 호날두 04/18
  • 저도 칭구덕에 이젠 큰 부자가... 가현 04/15
  • 저도 칭구덕에 이젠 큰 부자가... 가현 04/12
  • 배우 김정현은 길지 않은 연기... 김정현 04/10

최근에 받은 트랙백

  • Solace Salts Bold Tobacco. Solace Salts Bold Tobacco 03/29
  • read this post from Bookie 7. read this post from Bookie 7 02/28
  • 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

글 보관함

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

달력

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

링크

  • Total : 265881
  • Today : 40
  • Yesterday : 41
Tattertools
Eolin
rss

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