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
[15449] Re:Re:Re:idHTTP에러 좀 도와주세요.
오랑캐꽃 [oranke] 2176 읽음    2015-04-06 10:38
인디 버리고 ICS를 시도해보실거면...
그 사이에 curl 한 번 써보시는것도 추천드립니다.

http://curl.haxx.se/

빌드된 바이너리는 대충 이거 줏어서 쓰시구요

http://curl.haxx.se/gknw.net/7.40.0/dist-w32/curl-7.40.0-rtmp-ssh2-ssl-sspi-zlib-idn-static-bin-w32.zip

델파이/파스칼 바인딩도 배포되고 있습니다.

http://curl.haxx.se/libcurl/pascal/

우리 사이의 대표적인 https 사이트인 델마당에 접속하는 경우는 대충 다음과 같이...

function curl_data_callback(stream: Pointer; size, nmemb: size_t; userdata: Pointer): size_t;  cdecl;
var
  str: AnsiString; 
begin
  SetLength(str, size * nmemb);
  System.Move(stream^, str[1], size * nmemb);

  PAnsiString(userdata)^ := PAnsiString(userdata)^ + str;

  Result := size * nmemb;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  URL: AnsiString;
  hCurl:pCurl;
  RetStr: AnsiString;
begin
  hCurl:= curl_easy_init;
  if ( hCurl <> nil ) then
  begin
    URL := 'https://www.delmadang.com/';

    // stdout 에 장황한 설명을 표시.
    //curl_easy_setopt(hCurl, CURLOPT_VERBOSE, true);

    curl_easy_setopt(hCurl, CURLOPT_URL, PAnsiChar(URL));

    // 압축해서 받을때는 이렇게. (델마당은 해당없음)
    curl_easy_setopt(hCurl, CURLOPT_ENCODING, 'gzip,deflate');

    curl_easy_setopt (hCurl, CURLOPT_FOLLOWLOCATION, true);

    curl_easy_setopt(hCurl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(hCurl, CURLOPT_TIMEOUT, 30);

    curl_easy_setopt(hCurl, CURLOPT_WRITEFUNCTION, @curl_data_callback);
    curl_easy_setopt(hCurl, CURLOPT_WRITEDATA, @RetStr); 

    curl_easy_perform(hCurl);

    curl_easy_cleanup(hCurl);

    WriteLn('------------------');
    WriteLn('Received Data: ');
    WriteLn(RetStr);
  end;
end;


post 로 던질때는 

curl_easy_setopt(hCurl, CURLOPT_POST, true);

이렇게 옵션 켜주신다음 필드 문자열 "id=어쩌구&ps=저쩌구" 를 이렇게 던져주면 됩니다.

curl_easy_setopt(hCurl, CURLOPT_POSTFIELDS, PAnsiChar(FieldStr));








첫눈 님이 쓰신 글 :
: 먼저 답변 주심에 대해 감사드립니다.
:
: 제가 지금 개발하고 있는 프로그램은 말씀드린 바와 같이 웹페이지를 분석하여 데이터를 가져오기 위한 것입니다.
:
: 하나의 사이트에서만 데이터를 가져오는 것이 아니고 모두 11개 홈페이지의 데이터를 가져와 집계하고 있는데요.
: 물론 11개 홈페이지는 각각 다른 사이트이고 모두 https에 로그인 하는 사이트입니다.
: 처음 개발하였을때는 11개 페이지 모두 이상없이 데이터를 가져올 수 있었습니다.
:
: 하지만 몇개월간 이상없이 잘 쓰던 프로그램이 갑자기 어느 특정 사이트에서 데이터를 가져오지 못하는 증상이 나타났습니다.
: 해당 사이트 이외에 다른 10개 사이트는 정상이구요.
:
: 문제가 된 사이트에 크롬웹브라우저로 접속하며 해더를 분석해 보면 달라진 것이 전혀 없습니다.
: 겉으로 보기에는 홈페이지 개편을 한 것 같지는 않구요.
: 물론 서버를 직접 볼 수 없으니 내부사정은 알지 못합니다.
:
: 어쩔 수 없이 문제가 된 웹사이트의 로그인 부분만 VB와 JAVA로 만들어 테스트를 해보니 전혀 이상없이 로그인이 되고
: 유난히 델파이에서만 이런 증상이 나타납니다.
:
: 지금 2개월 이상을 아무 일도 하지 못하고 이 문제만 잡고 있는데
: 저로써는 더 이상 시도해 볼만한 것이 없습니다.
:
: 차라리 이럴 바엔 VB나 JAVA로 다시 개발할까도 생각을 하고
: VB로 개발을 해 보니 VB에서는 또 다른 사이트 하나가 동일한 문제로 해결이 되지 않아 포기했구요.
:
: JAVA로 개발을 해 볼까 했으나 JAVA로 개발하기 위해서는 SWING로 해야 하고
: 잡다한 이벤트핸들러에 대한 정보가 없어 개발을 시도하다 포기했습니다.
:
: 사실 전 도스시절에 개발을 해봤을 뿐
: 윈도우가 나온 이후에는 개발에서 손을 뗀지라
: 윈도우 프로그래밍에 대한 이해도 없고
: 다만 그때 그때 필요한 소스코드들을 인터넷에서 찾아 오려붙여가며 개발을 하는 정도라
: 뭐하나 개발한다는 것이 여간 어려운게 아니거든요.
:
: 그래서 제가 생각하지 못한 부분이 있지 않나 하여 질문을 드렸는데요.
:
: 혹시라도 제가 테스트해보아야 할 것을 놓힌 것이 있거나 어떤 실마리라도 있다면 알려주시면 감사하겠습니다.
:
: 로그인 아이디가 제것이 아니고 개발을 위해 빌려서 사용하는 것이라
: 만일 도움을 주실 수 있다 하시면
: 양해를 구하여 아이디와 암호를 개인적으로 알려드릴 수도 있을듯 합니다.
:
: 말씀해주신 ICS컴포넌트에 대해서는 검토를 해보도록 하겠습니다.
:
: 다시한 번 답변 감사드립니다.
:
:

+ -

관련 글 리스트
15443 idHTTP에러 좀 도와주세요. 첫눈 2807 2015/04/03
15446     Re:idHTTP에러 좀 도와주세요. 정영훈 2779 2015/04/04
15447         Re:Re:idHTTP에러 좀 도와주세요. 첫눈 2656 2015/04/04
15449             Re:Re:Re:idHTTP에러 좀 도와주세요. 오랑캐꽃 2176 2015/04/06
15450                 Re:Re:Re:Re:idHTTP에러 좀 도와주세요. 첫눈 2246 2015/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.