델파이 XE2니까 인디 10인것 같은데요.
다른 라이브러리라면 어떤 것을 말씀하시는지 모르겠습니다.
꾀 오래되었는데 아직도 안풀리고 있네요.
정영훈 님이 쓰신 글 :
: 인디버전이 몇인지요...
: 인디는 core 컴포넌트는 대체적으로 안정적이나 프로토콜 구현 컴포넌트는 버그가 좀 있습니다.
: 다른 라이브러리로 테스트해보시기 바랍니다.
: 또한 jvm을 임베디드 할 수 있습니다만...그런 작업으로 jvm을 내장한다는건 추천드리고 싶지는 않습니다.
:
: 첫눈 님이 쓰신 글 :
: : 질문이 너무 막연해서 죄송합니다.
: : 하지만 어떻게 자세한 상황을 설명드릴 것이 없으니 혹시라도 도움을 받을 수 있을까 하는 기대감에 질문드립니다.
: :
: : 다른게 아니구요.
: :
: : 특정사이트의 웹페이지를 파싱하려 합니다.
: :
: : 일단 로그인을 해야 하니
: :
: :
: :
: : idHttp1 := TidHttp.Create(NIL);
: : IdHTTP1.HandleRedirects := True;
: : idSSL := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
: : idHttp1.IOHandler := idSSL;
: : POSTData := TStringList.Create;
: : POSTData.Values['id'] := ID;
: : POSTData.Values['pwd'] := PWD;
: : URL := 'https://....';
: : TRY
: : HTMLStr := IdHTTP1.Post(URL, POSTData, TEncoding.UTF8);
: : Except
: : POSTData.Free;
: : IdSSL.Free;
: : idHttp1.Free;
: : Exit;
: : END;
: :
: :
: : 이렇게 로그인을 했습니다.
: :
: : POST결과로 돌아온 HTML문서를 확인해 보면 로그인에는 아무 문제 없이 정상적으로 로그인이 되었습니다.
: :
: : 그리고 이제 필요한 데이터가 있는 페이지로 이동하기 위해 다음과 같이 했습니다.
: :
: :
: : URL := 'http://....../';
: : Response := TStringStream.Create('');
: : HTMLStr := '';
: : TRY
: : IdHTTP1.Get(URL, Response);
: : Except
: : Response.Free;
: : IdSSL.Free;
: : idHttp1.Free;
: : Exit;
: : END;
: :
: : 이렇게 하면
: : IdHTTP1.Get(URL, Response);
: : 이부분에서 Timeout이 되어 버립니다.
: : 물론 Timeout를 아무리 길게 주고 기다려 봐도 응답이 없습니다.
: :
: :
: : 혹시나 해서 이 부분만 비주얼베이직과 JAVA로 만들어 봤습니다.
: : 물론 문법이 다른 차이 이외엔 똑같이 구현했구요.
: :
: : 그런데 비주얼베이직과 JAVA로 구현하면 아무 이상이 없이 잘 되는데
: : 유난히 델파이에서만 안되는 것을 보면 분명히 idHTTP에 문제가 있다고 밖에는 결론이 나지 않습니다.
: :
: : 혹시 제가 생각하지 못한 다른 것이 있을까요?
: :
: :
: : 사이트와 소스코드 그리고 로그인 아이디와 암호를 를 모두 공개할 수 있으면 도움을 받을 수 있겠지만
: : 이런 식의 질문은 너무 막연하다는 것을 알고 있습니다.
: :
: : 하지만 지푸라기라도 잡아야 하는 입장이라 도움 기대하겠습니다.
: :
: :
: :
: :
: : 혹시 이게 해결이 안되면 JAVA에서는 문제없이 웹페이지를 읽어오니
: : 웹페이지를 불러오는 부분은 JAVA Class로 만들고
: : 델파이에서 JAVA Class를 불러들여 HTML문을 스트링으로 받을 수 있는 방법이 있을까요?
: :
: : 안드로이드에서는 가능하다고 하는데 PC상에서는 가능할지요?