簡體   English   中英

Indy https GET-身份驗證

[英]indy https GET - authentication

我正在嘗試使HTTPS-get請求工作,以便加載網址以“ https:”開頭的網頁。 我在Delphi 7中使用Indy10(5248),即使使用與瀏覽器中相同的名稱/密碼或域名\\名稱/密碼,我似乎也無法獲得正確的授權。 我得到的只是服務器響應,就像在瀏覽器中取消身份驗證請求一樣。

現在有幾種提供名稱/密碼的方法:

  • 可以在idHTTP.request中將它們作為屬性值輸入
  • 同上,在idHTTP.ProxyParams中
  • idHTTP具有許多on ... Authorization-events
  • 一個Post示例使用命名參數,但這似乎特定於它試圖訪問的google網站(否則,我將如何找出參數名稱是什么?。)

另外還有選擇。 即使組合的數量有限,我仍然找不到適合我的組合。 正確的做法是什么?

s := IdHTTP1.Get('https://qwerty.wur.nl');
Memo1.Lines.Add(Format('Response Code: %d', [IdHTTP1.ResponseCode]));
Memo1.Lines.Add(Format('Response Text: %s', [IdHTTP1.ResponseText]));

Memo1.Lines.Add(s);

您不需要代理參數。 設置IdHTTP1.Request.BasicAuthentication代替:

IdHTTP1.Request.BasicAuthentication:= true;
IdHTTP1.Request.UserName := UserName;
IdHTTP1.Request.Password := Password;

請注意,您需要按照此處的說明為SSL准備應用程序和IdHTTP1Delphi:idHttp + SSL和此處TIdHTTP.Get EIdIOHandlerPropInvalid Error

TIdHTTP指定HTTP身份驗證憑據的正確方法是使用TIdHTTP.Request屬性。 這是TIdHTTP在啟動新的經過身份驗證的會話時尋找它們的地方。 如果服務器拒絕/挑戰身份驗證,則會觸發OnSelectAuthorizationOnAuthorization事件,以允許應用分別選擇不同的身份驗證方案和/或提供不同的憑據。

對於POST示例 ,它正在發布HTML Web表單,例如您在網站的登錄頁面上看到的那樣。 參數是通過分析定義Web表單的HTML來確定的,就像Web瀏覽器一樣。 Webform身份驗證與HTTP身份驗證無關。 兩者不是互斥的,如果服務器決定,它們可以一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM