안녕하세요.
인디로 특정 url에서 xml을 긁어오다가 한가지 문제가 생겼습니다.
http://www.test.com/test.php라는 url이 있습니다.
이 php는 접속자가 로그인했으면 xml을 주고 아니면 오류통보를 돌려줍니다.
문제는 http://www.test.com에 IE에서 로그인 한후에도 idhttp.get를 쓰면 오류통보가 온다는겁니다.
로그인후에 webbrowser.navigate를 쓰면 xml이 돌아오는데 인디처럼 블로킹방식으로 동작하지 않으므로 기본프로세스와 동기를 맞출수 없습니다.
선배님들께서 앞을 밝혀주시기를 고대합니다.
repeat until을 쓴게 보기 싫습니다.
웹브라우저를 쓰지않고 인디로 할 방법이 없을가요?
<!--CodeS-->
private
{ Private declarations }
docend : Boolean;
reply : WideString;
function getreply(vurl : string): WideString;
function TForm1.getreply(vurl: string): WideString;
begin
wb.Navigate(vurl);
repeat
Application.ProcessMessages;
until docend;
Result := reply;
end;
procedure TForm1.wbBeforeNavigate2(Sender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
begin
docend := False;
end;
procedure TForm1.wbDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
reply := wb.OleObject.document.documentelement.outerhtml;
docend := True;
end;
<!--CodeE-->