2011. 10. 17. 16:59

WinInet으로 HTTP POST File Upload와 Data를 함께 보내기

생각보단 WinInet을 이용하여 Data나 File을 HTTP Post로 전송하는 자료가 많지 않더군요.
그래서 CHttpClient class를 공유합니다.


다음과 같은 기능을 제공합니다. 
  • File / Data 타입의 Post data 추가 기능 (Multi-Part로 전송)
  • 간단한 Encoding 기능
  • Response Data 리턴 기능

과 같습니다. Multi-Thread가 지원되지 않고, 호출시 Block됩니다.
그러니, UI에서 호출할 때에는 caller에서 Thread를 만들어 내부에서 사용하세요.

리턴값과 NULL을 체크하지 않는 Rough한 사용예는 다음과 같습니다.



그리고, http://localhost/tmp/upload.php는 다음과 같습니다.


그럼 아래와 같이 AfxMessageBox됩니다.



즉, 파일이 업로드 되었고, HTTP Post/Get Data가 동시에 잘 전달되었음이 확인됩니다.

자세한건, 위 예를 보시기 바라며,
RequestPost 함수는 해당 함수 구현부의 주석을 참고 바랍니다.