我有一个Delphi XE6应用程序,我想安装在Android手机上。我在Windows平台上测试它。以下是我的单位源代码。在我的表格上,我有一个按钮,idHttp Indy工具和备忘录字段。
问题是当我点击按钮时出现错误
HTTP / 1.1 403禁止。
但我可以通过浏览器访问该网站,因此不禁止该页面。 任何人都可以看到问题吗?
我已经搜索了如何使用firemonkey和delphi发布请求,我找到了这些链接:
这些都没有帮助我。
unit Start_Interface_u;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
FMX.Layouts, FMX.Memo;
type
TForm1 = class(TForm)
btnLogin: TButton;
IdHTTP1: TIdHTTP;
Memo1: TMemo;
procedure btnLoginClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.btnLoginClick(Sender: TObject);
Var
sResult: String;
DataToSend :TStringList;
begin
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://mysite.co.za/dash.php', DataToSend));
end;
end.
答案 0 :(得分:0)
我会尝试将用户代理设置为模拟常见的Web浏览器,例如(取自this回答)
Request.UserAgent :=
'Mozilla/5.0 (Windows NT 5.1; rv:2.0b8) Gecko/20100101 Firefox/4.0b8';
答案 1 :(得分:0)
403
表示缺少HTTP层身份验证或发送错误的凭据。 TIdHTTP
使用插件架构来处理HTTP身份验证。您需要向IdAuthentication...
子句添加各种IdAllAuthentications
单元或uses
单元,以启用Indy支持的所需HTTP身份验证,如NTLM或摘要。还有一个TIdHTTP.OnSelectAuthorization
事件可以更好地控制服务器支持多种类型时要使用的身份验证类型,以及TIdHTTP.OnAuthorization
事件,以便在服务器请求时提示您获取新凭据。