2013-09-01 5 views
0

주요 작업은 Delphi 프로그램을 통한 POST 자동 작업입니다. REST 클라이언트를 사용하여 사이트 및 두 헤더의 URL을 갖는 것으로 나타났습니다. * login_email * 및 * login_pass * 성공적으로 HTML 코드를 가져올 수 있으며 POST 인증 양식은 OK입니다. 로그인했습니다.Delphi XE에서 POST 요청

그러나, 이 델파이 코드를 작성했습니다 :

DataToSend := TStringList.Create; 
DataToSend.Add(''); 

IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; 
IdHTTP1.Request.CustomHeaders.AddValue('login_email','some_email'); 
IdHTTP1.Request.CustomHeaders.AddValue('login_pass','some_password'); 

Memo1.Lines.Add(idHTTP1.Post('http://url.com', DataToSend)); 

내 사용자 정의 헤더가 URL 인코딩되지 않았습니다.

나는 요청 헤더를 참조하십시오

Server: nginx/1.0.8 
Date: Sun, 01 Sep 2013 17:03:59 GMT 
Content-Type: text/html; charset=windows-1251 
Connection: close 
X-Powered-By: PHP/5.2.6-1+lenny16 
Vary: Accept-Encoding 

하지만 ontained HTML은 POST 요청이 처리되지 않은 형태로 전송 된있는 같은 페이지입니다.

내가 뭘 잘못하고 있니?

+0

일부 서버는 Indy가 설정 한 기본 'User-Agent'로 인해 요청을 거부합니다. 그럴 경우,'IdHTTP1.Request.UserAgent' 속성을 즐겨 찾는 브라우저 중 하나로 채워서 브라우저가되어있는 서버를 가짜로 만들 수 있습니다. 그러나 그것은 단지 추측입니다 (그리고 꽤 자주 발생하는 문제). – TLama

+0

UserAgent로 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Gecko와 같은 KHTML) Chrome/29.0.1547.62 Safari/537.36을 추가했지만 아무 것도 변경되지 않았습니다. –

답변

4

POST 요청 매개 변수에는 절대로 HTTP 헤더가 포함되지 않습니다. 시도해보십시오 :

DataToSend := TStringList.Create; 
DataToSend.Add('login_email=some_email'); 
DataToSend.Add('login_pass=some_password'); 
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; 

Memo1.Lines.Add(idHTTP1.Post('http://url.com', DataToSend)); 
+0

예, 작동합니다. 감사합니다! –

관련 문제