Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12013] idhttp의 post, get문제입니다. 도와주세요.
푸른꿈 [bluedream] 5995 읽음    2008-05-08 20:09
http://bill.finance.sina.com.cn/bill/detail_js.php?stock_code=sh600690

이 url을 주소창에 넣고 치면 detail_js.php파일의 다운로드창이 뜹니다.
이 url을 urldownloadtofile함수에 넣어 detail_js.php을 다운로드할수는 있는데
stock_code가 수만개이고 홈피가 5~10초간격으로 갱신되므로 파일을 다운로드하고 다시 읽어서 분석할 여유가 없습니다.
post에 이 url을 쓰니까 다운로드창은 뜨지 않는데 돌아오는 스트링스트림이  비여있고
get에 쓰면 tntmemo에 이상한 문자렬이 뜹니다.
첨부파일의 그림은 다운로드한 파일의 내용과 메모리스트림에 읽어 save한 내용의 대비입니다.
그림상단은 ultraedit의 헥스에디터로 본것입니다.
시간이 촉박한 과제인데 무슨 방법이 없을가요?
고수님들 가르침을 기다립니다.

var
  Form1: TForm1;
  idhttp : TIdHTTP;
implementation
uses IdHTTP, IdMultipartFormData;

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  idhttp.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
    Font.Name := 'MS Shell Dlg 2'
  else
    Font.Name := 'MS Shell Dlg';
  idhttp := TIdHTTP.Create(nil);
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  postdata: TIdMultiPartFormDataStream;
  recstream: TStringStream;
  url : string;
begin
  postdata := TIdMultiPartFormDataStream.Create;
  postdata.AddFormField('stock_code', 'sh600690');
  postdata.Position :=0;
  idhttp.Request.ContentType := postdata.RequestContentType;
  recstream := TStringStream.Create('');
  url := 'http://bill.finance.sina.com.cn/bill/detail_js.php';
  try
    idhttp.Post(url, postdata, recstream);
  finally
    mmo1.Lines.Add(recstream.DataString);
    ShowMessage('Post End');
  end;
  recstream.Free;
  postdata.Free;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  recstream: TStringStream;
  url : string;
begin
  recstream := TStringStream.Create('');
  url := 'http://bill.finance.sina.com.cn/bill/detail_js.php?stock_code=sh600690';
  try
    //mmo1.Lines.Add(idhttp.Get(url));
    idhttp.Get(url, recstream);
  finally
    mmo1.Lines.Add(recstream.DataString);
    ShowMessage('Get End');
  end;
  recstream.Free;
end;

+ -

관련 글 리스트
12013 idhttp의 post, get문제입니다. 도와주세요. 푸른꿈 5995 2008/05/08
12022     Re:idhttp의 post, get문제입니다. 도와주세요. DrK 2662 2008/05/13
12027         Re:Re:idhttp의 post, get문제입니다. 도와주세요. 푸른꿈 2939 2008/05/14
12028             delphi indy deflate DrK 3613 2008/05/14
12032                 Re:delphi indy deflate 푸른꿈 2333 2008/05/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.