1

我在使用 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); 
4

0 回答 0