HTTP에서 POST 방식으로 전송하는 방법에는 두가지가 있는데..
"application/x-www-form-urlencoded" 방식을 사용하려면, TIdMultiPartFormDataStream를 사용하면 안 됩니다.
다음 두가지 방법 중에서 첫번재 방법을 사용하세요.
1. application/x-www-form-urlencoded
TStringList *PostData = new TStringList();
PostData->Values["USER"] = "user";
PostData->Values["PASS"] = "pass";
UnicodeString strResponse = IdHTTP1->Post( L"http://127.0.0.1/test", PostData );
Memo1->Lines->Text = strResponse;
2.multipart/form-data
TIdMultiPartFormDataStream *PostData = new TIdMultiPartFormDataStream();
PostData->AddFormField("USER", "user");
PostData->AddFormField("PASS", "pass" );
UnicodeString strResponse = IdHTTP1->Post( L"http://127.0.0.1/test", PostData );
Memo1->Lines->Text = strResponse;
두가지 방법 모두 한글을 사용할 때는 주의해야 합니다.
서버와 클라이언트 Encoding 을 잘 맞추어줘야 합니다.
김태우 님이 쓰신 글 :
: IdHTTP1->Request->Connection ="keep-alive";
: IdHTTP1->Request->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11";
: IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
: IdHTTP1->Request->Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
: IdHTTP1->Request->AcceptEncoding = "gzip,deflate,sdch";
: IdHTTP1->Request->AcceptLanguage ="ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4";
: IdHTTP1->Request->AcceptCharSet = "windows-949,utf-8;q=0.7,*;q=0.3";
:
: request->AddFormField("test01",userID->Text);
: /request->AddFormField("test02",userPW->Text);
: request->AddFormField("WKK","");
: IdHTTP1->Post(url, request, response);
: response->Position = 0;
: this->Memo1->Lines->Add(response->DataString.c_str());
: 이렇게 코딩 하였습니다..
:
: 그런데 자꾸..패킷을 캡쳐해보면...
:
:
: Connection: keep-alive
: Content-Type: multipart/form-data; boundary=--------022012113736598
: Content-Length: 104
: Host: seowon.seowon.ac.kr
: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
: Accept-Charset: windows-949,utf-8;q=0.7,*;q=0.3
: Accept-Encoding: gzip,deflate,sdch, identity
: Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
: User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
:
: ----------022012113736598
:
:
: 이렇게 캡쳐가 됩니다...
:
: Content-Type 이 멀티 타입으로요... 이유가 무엇인지요..?