我在使用 TWebBrowser 导航并将数据发布到 Web 服务器时遇到问题。
发生的情况是,当我最初设置帖子数据并导航到页面时,所有信息都可以正常传递。填写一些信息并单击按钮处理请求后,服务器尝试处理请求,但一切都冻结了..
在这个屏幕上.. 奇怪的是,在我尝试了大约 30 次之后,它成功了。(没有冻结就通过了)所以我不确定是什么导致了不一致。
现在,如果我生成此数据并通过获取请求将其发送到服务器,只需将所有内容都放在链接中,它每次都可以工作。在 Chrome IE 等上。
我认为问题可能出在发布数据上,所以我尝试使用 TWebBrowser 发出获取请求,但它仍然冻结在我身上。
Browser.WebBrowser1.Navigate('https://test.com/ts/testAPI.asmx/Process?'+EncodedDataString);
同样在TWebBrowser中- 如果我点击重新开始按钮,该按钮会清除大部分发布/获取数据,然后将其全部输入我自己,然后处理它每次都可以正常工作的信息而不会冻结。
所以我唯一能想到的是,冻结似乎只发生在通过 TWebBrowser 发送 post/get 数据时......但是在没有发送数据时在 TWebBrowser 上工作。
我假设服务器在冻结时尝试运行某种 jquery 或 javascript,但我不确定。
下面是我的代码供参考。
EncodedDataString := 'username='+FileForm.Firm.FieldByName('USER').AsString+
'&password='+FileForm.Firm.FieldByName('PASS').AsString+'&action='+action+
'&token='+eToken+'&retname='+HTTPEncode(MaskEditRetName.Text)+
'&retaddress1='+HTTPEncode(MaskEditRetAddr.Text)+
'&retcity='+HTTPEncode(MaskEditRetCity.Text)+
'&retstate='+HTTPEncode(MaskEditRetState.Text)+
'&retzip='+HTTPEncode(MaskEditRetZip.Text)+
'&accountno='+HTTPEncode(MaskEditAccount.Text)+
'&amount='+HTTPEncode(MaskEditAmount.Text)+
'&date='+HTTPEncode(MaskEditDate.Text)+
'&paymenttype='+HTTPEncode(paymentType);
PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);
for i := 1 to length(EncodedDataString) do
PostData[i-1] := ord(EncodedDataString[i]);
Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;
Application.CreateForm(TBrowser,Browser);
Browser.WebBrowser1.Silent := True;
Browser.WebBrowser1.Navigate('https://test.com/ts/testAPI.asmx/Process',
EmptyParam, EmptyParam, PostData, Headers);