如何使用TWebBrowser Post数据解决我的问题?

时间:2013-03-20 22:29:57

标签: delphi delphi-xe twebbrowser

使用TWebBrowser导航并将数据发布到Web服务器时出现问题。

当我最初设置发布数据并导航到页面时,所有信息都会过时。填写一些信息并单击按钮处理请求后,服务器会尝试处理请求,但所有内容都会冻结..

enter image description here

在这个屏幕上..奇怪的是,在我尝试了这么多次的三十次左右它已经奏效了。 (经历了没有冻结)所以我不确定是什么会导致不一致。

现在,如果我生成这些数据并通过获取请求将其发送到服务器,只需将链接中的所有内容放入其中,每次都可以使用..在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); 

0 个答案:

没有答案