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
[15446] Re:idHTTP에러 좀 도와주세요.
정영훈 [allinux] 2775 읽음    2015-04-04 01:25
음...분명 인디 http 컴포넌트을 많은 분들은 잘 사용하고 있습니다.
문제는 오류를 3자가 재현을 해볼 수 있으면 문제해결을 위한 답변을 더 빨리 얻으실 수도 있습니다.
https 면 델마당도 로그인시에 https 를 사용합니다.
그런 사이트들을 상대로 오류를 재현해보세요. 그러면 질문을 보시는 많은 분들도 재현을 해볼 수 있을테고 답변 얻기도 훨씬 수월할겁니다.
또한 인디와 더불어 ICS(http://www.overbyte.be/) 라는 컴포넌트도 많이 사용하는 검증된 컴포넌트입니다.
해당 컴포넌트도 검토해보세요.
첫눈 님이 쓰신 글 :
: Delphi XE2 정식버젼을 사용하고 있습니다.
:
: IdHTTP.Version을 확인해 보면 "10.5.8.0" 이라고 나옵니다.
:
: OS는 Win7 64Bit와 Win8.1 64Bit 양쪽에서 모두 동일한 증상이 나타납니다.
:
:
:
: http://xxxxxxx.com/에 로그인 한 후에
: http://xxxxxxx.com/data 페이지의 HTML소스를 가져오는 소스코드입니다.
:
: 로그인 해더를 분석해 보면 아래와 같습니다.
:
: https://xxxxxxx.com/LogIn
: POST /LogIn HTTP/1.1
: Host: xxxxxxxx.com
: User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
: Accept-Language: en-US,en;q=0.5
: Accept-Encoding: gzip, deflate
: Referer: http://xxxxxxxx.com/
: Cookie: A2SK=..........
: Connection: keep-alive
: Content-Type: application/x-www-form-urlencoded
: Content-Length: 30
: id=xxxxxx&pw=xxxxxxxx
:
:
:
: 로그인에 성공하면 리턴되는 문자열 안에 ID가 포함되어 있으니
: ID가 포함되어 있는지 여부로 로그인 성공 여부를 확인할 수 있습니다.
:
:
: 에러 증상은 그때 그때 마다 다른데요.
:
:
: 첫번째 에러는 아주 가끔이지만
: https://xxxxxxx.com/LogIn에 POST할때 에러가 발생합니다.
: 에러메세지는 "EidSockError 10038" 이라고 나오구요.
:
: 하지만 이 증상은 아주 가끔나오니 크게 문제되지는 않습니다.
:
:
:
:
:
: 두번째 에러가 계속 발생하는데요.
:
: https://xxxxxxx.com/LogIn에 POST할때는 이상이 없습니다.
: 로그인도 잘 되구요.
:
: 하지만 로그인 한 후에
: http://xxxxxxxx.com/data의 페이지를 가져오려 하면 ReadTimeout이 나옵니다.
:
: 에러메세지는 첨부파일과 같구요.
: 에러코드는 에러메세지는 "EidSockError 10060" 이라고 나올때가 있고
: 에러메세지는 "EidSockError 10056" 이라고 나올때가 있습니다.
: 에러가 나지 않는 경우는 없구요.
:
:
:
: 하지만 이 에러가 처음 부터 발생한 것은 아닙니다.
: 타회사 서버이므로 서버에서 어떤 작업을 했는지 몰라도 어느날 부터 갑자기 이런 증상이 나타나기 시작하더니
: 그 이후로 계속 나타나는데요.
:
:
:
: 참고로 로그인을 하지 않고
: http://xxxxxxx.com/data페이지를 가져와 보면
: 비록 필요한 데이터는 가져오지 못하지만 페이지를 가져오는데는 문제가 없습니다.
:
: 하도 답답해서 JAVA와 VB로 동일한 프로그램을 만들어 보면
: 물론 첫번째 문제나 두번째 문제 어느 증상도 나타나는 경우가 없습니다.
:
: 유난히 델파이에서만 이런 증상이 나타납니다.
:
:
:
:
:
:
:
:
:
: 
: Function GetHTML(ID: String; PWD: String) : Striing;
: Begin
:       Result := '';
: 
:       idHttp                    := TidHttp.Create(NIL);
:       idHttp.ConnectTimeout     := 1000;
:       idHttp.ReadTimeout        := 1000;
:       IdHTTP.HandleRedirects    := True;  // HTTP/1.1
:       idHttp.Request.Connection := 'keep-alive';
:       idHttp.Request.UserAgent  := 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0';
:       idHttp.Request.Referer    := 'http://xxxxxxx.com/';
:       idSSL                     := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
:       idHttp.IOHandler          := idSSL;
:       POSTData                  := TStringList.Create;
: //================================== Form ======================================
:       POSTData.Values[id']      := ID;
:       POSTData.Values[pw']      := PWD;
: //================================= Submit =====================================
:       URL := 'https://xxxxxxx.com/LogIn';
:       TRY
:             HTMLStr := IdHTTP.Post(URL,  POSTData, TEncoding.UTF8);
:       Except
:             POSTData.Free;
:             POSTData := Nil;
:             idSSL.Free;
:             idSSL := Nil;
:             idhttp.Free;
:             idhttp := Nil;
:             Exit;
:       END;
:       POSTData.Free;
:       POSTData := Nil;
: 
: 
: //============================== 로그인 확인 ======================================
:       IF  POS(ID, HTMLStr) < 0 then  // 로그인 ID가 포함된 문자열이 리턴되면 로그인 성공
:       Begin            
:             idSSL.Free;
:             idSSL := Nil;
:             idhttp.Free;
:             idhttp := Nil;
:             Exit;
:       End;
: //===============================================================================
: //===============================================================================
:       Response := TStringStream.Create('');
:       HTMLStr  := '';
: //================================= Get ==========================================
:       URL  := 'http://xxxxxx.com/data';
:      TRY
:             IdHTTP.Get(URL,  Response);
:       Except
:             Response.Free;
:             Response := Nil;
:             idSSL.Free;
:             idSSL := Nil;
:             idhttp.Free;
:             idhttp := Nil;
:             Exit;
:       END;
: 
:       HTMLStr := TEncoding.UTF8.GetString(Response.Bytes, 0, Response.Size);
:       Response.Free;
:       Response := Nil;
:       idSSL.Free;
:       idSSL := Nil;
:       idhttp.Free;
:       idhttp := Nil;
: 
:       Result = HTMLStr;
: End;
: 
: 

+ -

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