使用TWebBrowser导航并将数据发布到Web服务器时出现问题。
当我最初设置发布数据并导航到页面时,所有信息都会过时。填写一些信息并单击按钮处理请求后,服务器会尝试处理请求,但所有内容都会冻结..
在这个屏幕上..奇怪的是,在我尝试了这么多次的三十次左右它已经奏效了。 (经历了没有冻结)所以我不确定是什么会导致不一致。
现在,如果我生成这些数据并通过获取请求将其发送到服务器,只需将链接中的所有内容放入其中,每次都可以使用..在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);