2015-01-20 25 views
-1

로 데이터를 전송하지 :델파이 7 TidHttp.post 내가 양식을 게시하려면이를 사용하고 서버

c := tidhttp.Create(self); 
p := tstringlist.Create; 

p.Add('field=value'); 

s := c.Post('http://www.test.com/action.php', p); 

p.Free; 
c.Free; 

온라인 호스팅 시도와 XAMPP 시도 내가 같은 결과를 얻을 수, 데이터가 수신되지.

양식 :

<form action="action.php" method="POST" name="test"> 
<input type="text" name="field"><br> 
<input type="submit"> 
</form> 

이 내가 바로 그 일을하고 있음을 시사 많은 답변이 있지만 데이터가 가 TStringSTream.create(UTF8String('field=value'))하지만 아무것도 시도 수신되지

귀하의 HTML 웹 양식이 구성
+0

당신은 우리에게 중요한 부분을 보여주지 못했습니다! ** action.php **의 코드! action.php에서 어떤 일이 발생하는지 보려면 어떻게해야할까요? ** action.php **의 소유자입니까? –

+0

나는 action.php의 소유자 다. 간단한 로그인 양식으로 여러 다른 웹 사이트에서도 시도했는데, 다시 로그인 페이지로 리디렉션되거나 "username/password empty"오류를 보였다. 나는 완전히 혼란스럽고, 나는 틀린 것을 보지 못한다. 아마도 그것은 어리 석다. –

+0

이제 action.php를 보여 주시겠습니까? –

답변

0

제출 데이터는 http://www.test.com/action.php (HTML 페이지가 http://www.test.com/에있는 것으로 가정).

귀하의 인디 코드는 Post()이고 데이터는 http://www.test.com입니다. 나는 (당신은 사람들이 생각하지 않습니다 안) 추측이 있다면

s := c.Post('http://www.test.com/action.php', p); 

당신이 때 을 보내고 Post() ' http://www.test.com 에 : 코드에 데이터를 게시 할 때 올바른 URL을 사용해야합니다 에서 http://www.test.com/으로 리디렉션 될 가능성이 높습니다 (슬래시에 유의하십시오) . 리디렉션에서 응답 코드 303을 사용하거나 302을 사용하고 TIdHTTP.HTTPOptions 속성에서 hoTreat302Like303 옵션을 사용하도록 설정 한 경우 TIdHTTP은 대신 GET을 리디렉션되는 새 URL로 보냅니다.

+0

사실 그것은 실수입니다. 게시 된 코드가 수정되어 내 세부 정보가 나타나지 않고 잊어 버렸습니다. action.php는 원래 코드의 일부입니다. –

+1

질문을 업데이트하여 TIdHTTP가 보내는 실제 HTTP 요청을 표시하십시오. 이 데이터를 얻으려면, 1) Wireshark와 같은 패킷 스니퍼를 사용하거나, 2) Fiddler와 같은 디버깅 프록시를 사용하거나, 3) Indy의 'TIdLog ....'구성 요소 중 하나를 TIdHTTP에 연결합니다. –

+0

TidLogDebug 및 Microsoft 네트워크 모니터는 전송되는 필드를 표시합니다. –