2012년 11월 21일 수요일
IdHttp 에서 get post 사용하기
클라이언트가 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 Get 이나 Post가 사용됩니다. GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 여러개일 경우에는 & 으로 반복하고, POST는 숨겨져서(body안에) 보내집니다. GET은 URL에 이어붙기 때문에 길이제한이 있어서 많은양의 데이터는 보내기 어렵고 POST는 많은 양을 보내기에 적합합니다.(역시 용량제한은 있지만) 즉 http://url/exam.asp?date=20121121&area=all 같이 하는 것이 GET방식이고 form을 이용해서 submit을 하는 형태가 POST입니다.
게시판의 리스트를 가져온다고 하면 당연히 GET을 쓸 것이고 글을 작성한다고 하면 POST를 이용하는 것이 일반적입니다. GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등을 바꾸지 않습니다.
정리하면 GET은
- URL에 정보가 담겨서 전송된다.
- 전송할 수 있는 정보의 길이가 제한되어 있다.
- 퍼머링크로 사용될 수 있다.
POST
- header의 body에 담겨서 전송된다.
- URL 상에 전달한 정보가 표시되지 않는다.
- GET에 비해서 보안상 약간의 우위에 있다. (사실상 동일하다)
- 전송할 수 있는 데이터의 길이 제한이 없다.
- 퍼머링크로 사용할 수 없다.
- 서버 쪽에 어떤 작업을 명령할 때 사용한다. (데이터의 기록, 삭제, 수정 등)
idHttp 에서 Get 사용
var iSS: TStringStream;
begin
iSS:= TstringStream.create;
idHttp.get('URL', iSS);
Memo1.lines.text:= iSS.DataString;
iSS.Free;
end;
idHttp 에서 Post 사용
var iStrings: TStrings;
begin
iStrings.values['loginID']:= 'id';
iStrings.Values['Pwd']:= 'pwd';
Memo1.Lines.text:= idHttp.post('http://url/emac.asp', iStrings);
iStrings.free;
end;
WebVrowser 에서 쿠키 갖어 오기
mmResult.Lines.Text:= WebBrowser1.OleObject.Document.Cookie;
idHttp 에 쿠기 저장하기 1.
IdHTTP1.Response.RawHeaders.Add('Cookie: '+ mmResult.Lines.Text);
이 때 Cookie: 또는 Set-Cookie: 등으로 바꿔서 사용하므로 선택하여 사용 필요(paros에서 확인)
idHttp 에 쿠기 저장하기 2.
TWebBrowserHelper = class Helper for TWebBrowser
public
function GetCookieValue(Name: string): string;
function GetSessionID(Const id:string): string;
end;
function TWebBrowserHelper.GetCookieValue(Name: string): string;
var
Doc: IHTMLDocument2;
sList, tList: TStringList;
i: Integer;
begin
Result := '';
Doc := Self.Document as IHTMLDocument2;
if not assigned(Doc) then exit;
sList := TStringList.Create;
tList := TStringList.Create;
try
ExtractStrings([';'], [], PChar(Doc.cookie), sList);
for i := 0 to sList.Count - 1 do begin
tList.Clear;
ExtractStrings(['='], [], PChar(Trim(sList[i])), tList);
if AnsiCompareText(tList[0], Name) = 0 then begin
Result := tList[1];
exit;
end;
end;
finally
FreeAndNil(sList);
FreeAndNil(tList);
end;
end;
function TWebBrowserHelper.GetSessionID(const id: string): string;
begin
Result := Self.GetCookieValue(id);
end;
edSessionID.Text 에 PHPSessionID 등 세션 아이디가 있음
웹 개발자가 멋대로 만들기에 찾아서 기록, 또는 방법 1을 사용 하여 찾을 수 있음...
procedure TForm1.btSetCookieClick(Sender: TObject);
var IdURI: TIdUri;
begin
IdURI := TIdUri.Create(WebBrowser1.LocationURL);
edSessionValue.Text:= WebBrowser1.GetSessionID(Trim(edSessionID.Text));
IdCookieManager1.AddServerCookie(edSessionID.Text+'='+edSessionValue.Text, IDUri);
iduri.Free;
end;
http/1.1 302 Found 예외 에러 발생 하면 IdHttp 의 속성을 HandleRedirects := True; 해주면 됩니다.
피드 구독하기:
댓글 (Atom)
델파이 12.1이냐 11.3이냐?
델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.
-
윈도우10에 있는 음성 녹음기는 간단하게 녹음 할 때 간편하고 좋다. 곰 녹음기를 사용하면 오늘기준으로 CPU 점유율이 35% 이상 올라가 맥의 팬이 돌아간다. 윈10의 음성녹음기는 좋은 데 저장 폴더가 디폴트로 되어 있어 사용하기 불편하다. ...
-
클라이언트가 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 Get 이나 Post가 사용됩니다. GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 여러개일 경우에는 & 으로 반복하고, POST는 숨겨져서(body안에) 보내집니다. GET...
-
일단은 Python 사이트에가서 dmg 파일을 다운받아 설치합니다. m1 프로세서일경우에는 아래에 있는 파일이겠죠. 터미널을 열어 파이썬의 위치를 확인합니다. 파이썬3의 위치로 이동합니다. [cd /usr/local/bin] 파인더를 엽니다. [...
댓글 없음:
댓글 쓰기