Delphi 如何使用TIdHTTP在没有表单的情况下登录网页?

Delphi 如何使用TIdHTTP在没有表单的情况下登录网页?,delphi,login,idhttp,Delphi,Login,Idhttp,我想使用Delphi连接到嵌入式网页。如何使用TIdHTTP登录此网页?我尝试了此代码,但无法保持连接。页面中不包括标准POST操作。您会看到该页面不包含表单。我该怎么做?这个页面需要什么帖子 这是我的代码: IdHTTP1.Get('http://192.168.1.139/chklogin.php?a=0&u=admin&p=123456',ms); IdHTTP1.Connect; ShowMessage(IdHTTP1.ResponseText); 我试过这样做 Pos

我想使用Delphi连接到嵌入式网页。如何使用
TIdHTTP
登录此网页?我尝试了此代码,但无法保持连接。页面中不包括标准POST操作。您会看到该页面不包含表单。我该怎么做?这个页面需要什么帖子

这是我的代码:

IdHTTP1.Get('http://192.168.1.139/chklogin.php?a=0&u=admin&p=123456',ms);
IdHTTP1.Connect;
ShowMessage(IdHTTP1.ResponseText);
我试过这样做

PostData := TStringList.Create; 
PostData.Add('u='+user); 
PostData.Add('pw='+password); 
PostData.Add('submit=??????? ); // <-- What goes here?
IdHTTP1.Post('192.168.1.39/login', PostData);
PostData:=TStringList.Create;
Add('u='+用户);
Add('pw='+密码);
PostData.Add('submit=?);// 不要手动调用
Connect()
Get()
在内部为您处理该问题

Get()
的返回值包含响应内容,
ResponseText
不是您想要的内容

试试这个:

ShowMessage(IdHTTP1.Get('http://192.168.1.139/chklogin.php?a=0&u=admin&p=123456');
不要手动调用
Connect()
Get()
在内部为您处理该问题

Get()
的返回值包含响应内容,
ResponseText
不是您想要的内容

试试这个:

ShowMessage(IdHTTP1.Get('http://192.168.1.139/chklogin.php?a=0&u=admin&p=123456');

非常感谢。但问题是,我们无法回到过去。我已经可以回击了。但这种联系是不存在的。@metinkar保留生命是协商的。执行
Get()
IdHTTP1.request.Connection:=“保持活动”时,添加保持活动的显式请求
但不能保证服务器将实际保持连接在其端的活动状态。HTTP是无状态的,不要依赖于保持生命被尊重。让我再问你一次。不工作。我们如何发布()?当我创建请求时,提交哪些附加值?例如PostData:=TStringList.Create;尝试PostData.Add('u='+用户);Add('pw='+密码);PostData.Add('submit=?)@metinkar完全取决于服务器期望的内容,但在您显示的HTML中没有
submit
值,它显然使用
GET
而不是
POST
。我向您展示的内容与
XMLHTTP
脚本发送的内容相匹配,只是它也发送
d
值,而您没有发送。由于存在cookies,您应该
获取登录表单本身的HTML页面(也可能是在提示登录之前尝试访问的页面的HTML页面)在将登录表单提交到服务器之前,不要忘记在每个请求上设置
TIdHTTP.Request.Referer
。模仿web浏览器所做的一切并不总是微不足道的。这就是为什么您应该首先查看正在工作的浏览器的实际请求,然后根据需要在代码中模拟它们。别猜了,谢谢。但问题是,我们无法回到过去。我已经可以回击了。但这种联系是不存在的。@metinkar保留生命是协商的。执行
Get()
IdHTTP1.request.Connection:=“保持活动”时,添加保持活动的显式请求
但不能保证服务器将实际保持连接在其端的活动状态。HTTP是无状态的,不要依赖于保持生命被尊重。让我再问你一次。不工作。我们如何发布()?当我创建请求时,提交哪些附加值?例如PostData:=TStringList.Create;尝试PostData.Add('u='+用户);Add('pw='+密码);PostData.Add('submit=?)@metinkar完全取决于服务器期望的内容,但在您显示的HTML中没有
submit
值,它显然使用
GET
而不是
POST
。我向您展示的内容与
XMLHTTP
脚本发送的内容相匹配,只是它也发送
d
值,而您没有发送。由于存在cookies,您应该
获取登录表单本身的HTML页面(也可能是在提示登录之前尝试访问的页面的HTML页面)在将登录表单提交到服务器之前,不要忘记在每个请求上设置
TIdHTTP.Request.Referer
。模仿web浏览器所做的一切并不总是微不足道的。这就是为什么您应该首先查看正在工作的浏览器的实际请求,然后根据需要在代码中模拟它们。别猜了。