TWebBrowser を使用してデータをナビゲートし、Web サーバーに投稿するときに問題が発生します。
何が起こるかというと、最初に投稿データをセットアップしてページに移動すると、すべての情報がうまく渡されます。いくつかの情報を入力し、ボタンをクリックしてリクエストを処理した後、サーバーはリクエストを処理しようとしますが、すべてがフリーズします..
この画面で..奇妙なことに、30回ほど試したうち、2回はうまくいきました。(フリーズせずに通過しました)だから、何が矛盾の原因なのかわかりません。
このデータを生成し、get リクエストを介してサーバーに送信すると、すべてをリンクに入れるだけで、毎回動作します.. Chrome IE などで..
問題は投稿データにあるのではないかと考えたので、TWebBrowser を使用して get リクエストを実行しようとしましたが、それでもフリーズしました。
Browser.WebBrowser1.Navigate('https://test.com/ts/testAPI.asmx/Process?'+EncodedDataString);
また、TWebBrowserを使用しているときに、最初からやり直すボタンを押して、ほとんどの投稿/取得データをクリアし、それをすべて自分で入力してから情報を処理すると、毎回フリーズせずに機能します。
したがって、私が思いつくことができる唯一のことは、TWebBrowser を介してポスト/取得データを送信するときにのみフリーズが発生するように見えるということです...しかし、データが送信されない場合は 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);