친절하게 답변을 주어서 너무 고맙습니다/
제가 Indy 컴포넌트가 없어서 Components 페이지에서 다운후
설치하여 Test했는데..
String content_disp = IdHTTP1->Response->ExtraHeaders->Values["Content-Disposition"];
컴파일시 이 행에서 ExtraHeaders is not a member of 'TIdResponseHeaderInfo' 란
에러가 뜹니다.
그래서 보니까 IdHTTP1->Response 의 프로퍼티에 ExtraHeaders 란 항목이 없더라구요.
어떻게 하면 좋을지... ^^
그래서 생각한게
그냥 기본 NMHTTP 컴포넌트를 사용하게하였는데..
Get을 호출한다음 얻어지는 Data를 어떻게 저장해야 되는지를
모르겠네요...
하여튼 답변 주셔서 감사합니다.
임문환.실업자 님이 쓰신 글 :
: Indy의 TIdHTTP 입니다.
: 컴포넌트 팔래트의 Indy Clients 페이지에 있습니다.
: 어떤 버전부터인가는 잘 모르나 C++Builder에 기본으로 제공되는 것으로 알고 있습니다만...
:
:
: 나도초짜 님이 쓰신 글 :
: : 진짜루 고맙습니다.
: :
: : 그런데..
: : IdHTTP1->Get("
Http:://"+Host+CGI+"?"+Params,pMStream);
: : 에서 IdHTTP1 는 TNMHTTP 컴포넌트를 포함하는걸 나타내나요?
: : 이걸루 포함시키니까 컴파일 할때 에러나오던데..
: :
: : 제가 너무 초짜라 죄송합니다.
: : 이제 거의 99%까지 온거 같으니까 한번만 더 알려 주세요..
: : 그럼 꾸벅...
: :
: :
: : 임문환.실업자 님이 쓰신 글 :
: : : 나도초짜 님이 쓰신 글 :
: : : : 안녕 하세요..
: : : : 초보적인 질문인지는 모르겠는데 모르니까 무지 답답하네요..
: : : :
: : : : WebBrowser 에서 Navigate로 웹페이지 하나를 지정해서 접속을 했는데..
: : : :
: : : : 거기에보면 다운로드 버튼이 하나 있는데 이버튼을 눌러서 해당 파일을
: : : : 자동으로 받는 프로그램을 만들고 싶어요...
: : : :
: : : : 그런데 Text 소스를 보니 이 버튼을 누르면 아래 행을 실행하게 되어 있더라구요..
: : : : function excel_save() {
: : : : document.all.excel_iframe.src="ma_st_item_con_lst_viw_excel.jsp?indx_cd=&indx_ind_cd=&cur_pr=&cur_pr_type=&cur_pr1=&cur_pr2=&tr_vl=&tr_vl_type=&tr_vl1=&tr_vl2=&isu_stat=1&isu_stat_type=1&woo=&woo_type=&too_type=&too_type1=&too_type2=&too_type3=";
: : : : }
: : : :
: : : : 이걸 어떻게 전달을 하여 실행을 할수 있을지..
: : : :
: : : : PostData를 지정하는것같은데.. PostData 함수까지는 구현 하였는데..
: : : : PostData로 도데체 뭘 넘겨 줘야할지를 모르겠네요..
: : : :
: : : : 고수님들의 답변좀 부탁 드립니다.
: : : :
: : : : 그럼 꾸벅..
: : :
: : :
: : : 간단한 예를 들면 아래와 같이 할 수 있습니다.
: : :
: : : Params의 각 항목의 값을 분리해서 지정해야 할텐데요 그것은 별로 어려운 작업이 아닙니다.
: : : (분리해서 지정한 다음 다시 아래의 형식으로 합쳐야 겠지요)
: : : 분리해서 지정하려면 각 항목의 의미를 알아야 가능한데요.
: : : 그 것은 해당 URL의 결과 HTML 소스에서 해당 Form 영역을 살펴보면 답이 다 나와 있습니다.
: : : 예를 들어, '종합주가지수'라고 초기에 표시되는 항목의 이름은 indx_ind_cd이고
: : : 그것에 지정할 수 있는 값은 01 에서 40 ('종합주가지수'~'배당지수')까지인 것을 알 수 있습니다.
: : :
: : : String Host("www.kse.or.kr");
: : : String CGI("/webkor/market/st/item/con/ma_st_item_con_lst_viw_excel.jsp");
: : : String Params("indx_cd=1&indx_ind_cd=01&cur_pr=&cur_pr_type=&cur_pr1=&cur_pr2=&tr_vl=&tr_vl_type=&tr_vl1=&tr_vl2=&isu_stat=&isu_stat_type=&woo=&woo_type=&too_type=&too_type1=&too_type2=&too_type3=");
: : :
: : : void __fastcall TForm1::btnGetClick(TObject *Sender)
: : : {
: : : Screen->Cursor = crHourGlass;
: : : TMemoryStream *pMStream = new TMemoryStream;
: : : IdHTTP1->Get("
Http:://"+Host+CGI+"?"+Params,pMStream);
: : : IdHTTP1->Response->ExtraHeaders->CaseSensitive = false;
: : : //Content-Disposition: attachment; filename=20040917165039_file.xls
: : : String content_disp = IdHTTP1->Response->ExtraHeaders->Values["Content-Disposition"];
: : : String file_name;
: : : int idx = content_disp.LowerCase().Pos("filename=");
: : : if(idx>=1)
: : : {
: : : file_name = content_disp.SubString(idx+9,content_disp.Length());
: : : if(file_name.IsEmpty()==false)
: : : {
: : : TFileStream *pFStream = new TFileStream(file_name,fmCreate|fmShareDenyWrite);
: : : pFStream->CopyFrom(pMStream,0);
: : : delete pFStream;
: : : }
: : : }
: : : delete pMStream;
: : : Screen->Cursor = crDefault;
: : : }