0

主要任务是通过 Delphi 程序进行 POST 授权。使用 REST 客户端,我发现有站点的 url 和两个标题:*login_email* 和 *login_pass* 我可以成功获取 HTML codу 并且我的 POST auth 表单是好的,我已经登录了。

但是,我写了这个 Delphi 代码:

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

但保留的 HTML 是同一页面,其中 POST 请求已以未处理的形式发送。

我究竟做错了什么 ?

4

1 回答 1

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));
于 2013-09-01T19:16:31.793 回答