關於 WebBrowser 與 HttpClient 的 Post 方式結合問題?(200分)

  • 主题发起人 主题发起人 jiichen
  • 开始时间 开始时间
J

jiichen

Unregistered / Unconfirmed
GUEST, unregistred user!
目標網頁上有一個 Form
現在我不想要 WebBrowser 先讀取此頁再 post,
而是要直接就 post data 到目標。

由於我不會使用 WebBrowser 直接 Post Data
所以,改用一個折衷的方式,先使用
HttpClient 的 post method
再利用 webbrowser.LoadFromStream(DataIn);

雖然成功,但發現一個問題,在 webbrowser 可看見其
回應的內容,但只有文字,同時在連結部分都失敗了,
如有一個連結指向 './index1.htm' ,原本使用瀏覽器看
應該是指向 'http://www.somesite.com/index1.htm'
但在此例子中卻變成 'about:blank/index1.htm'

我想圖形顯示不出也是因為這樣,
有何辦法可讓其底層網址指向正常 URL。

ps: 如果有使用 WebBrowser 直接 Post 資料的方式請一併
談論,價錢可另議! ^_^




DataIn := TMemoryStream.Create; { For the response }
DataOut := TMemoryStream.Create; { For the data to be sent }
try
Buf := POstData;
{ Write the data to the stream which will be used to send }
DataOut.Write(Buf[1], Length(Buf));
{ Position the stream at the beginning or nothing will be sent }
DataOut.Seek(0, soFromBeginning);

{ Setup the HTTP component to transmit }

http1.Reference:=refer;
http1.SendStream := DataOut;
http1.RcvdStream := DataIn;

Http1.URL := url;
try
http1.Post;
{ Data sent, copy the webserver response to the DisplayMemo }

web.AssignDocument;

web.LoadFromStream(DataIn);

except
{ An error occured ! }
end;
finally
DataOut.Free;
DataIn.Free;
end;
 
PostData用于向页面提交信息,如stPostData:='animal=cat&color=brown' ;
procedure TDBModule.Navigate(stURL, stPostData: String; var wbWebBrowser: TWebBrowser);
var
vWebAddr, vPostData, vFlags, vFrame, vHeaders: OleVariant;
iLoop: Integer;
begin
{Are we posting data to this Url?}
if Length(stPostData)> 0 then
begin
{头信息当PostData使.}
vHeaders:= 'Content-Type: application/x-www-form-urlencoded'+ #10#13#0;
vPostData:= VarArrayCreate([0, Length(stPostData)], varByte);
for iLoop := 0 to Length(stPostData)- 1 do
begin
vPostData[iLoop]:= Ord(stPostData[iLoop+ 1]);
end;
{结束字符}
vPostData[Length(stPostData)]:= 0;
{Set the type of Variant, cast}
TVarData(vPostData).vType:= varArray;
end;
vWebAddr:= stURL;
wbWebBrowser.Navigate2(vWebAddr, vFlags, vFrame, vPostData, vHeaders);
end;

 
感謝,已經可以使用瀏覽器 Post Data 了!

使否能請至這裡一覽!
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=496639
也是 200 分。關於 IHtmlInputFileElement 的問題。
 
接受答案了.
 
后退
顶部