第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Flurl 和不受信任的證書

Flurl 和不受信任的證書

C#
浮云間 2022-06-19 10:27:17
目前我在 Flurl 工作,并嘗試在 https 中聯(lián)系 API(我在我的實(shí)驗(yàn)室)。所以證書無(wú)效,F(xiàn)lurl 無(wú)法繼續(xù)工作:/這是我的錯(cuò)誤信息:Unhandled Exception: System.AggregateException: One or more errors occurred. (Call failed. The SSL connection could not be established, see inner exception. POST https://IP/api/aaaLogin.json) ---> Flurl.Http.FlurlHttpException: Call failed. The SSL connection could not be established, see inner exception. POST https://IP/api/aaaLogin.json ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.在 Flurl 文檔中我們可以使用using Flurl.Http.Configuration;和修改DefaultHttpClientFactory但是我不理解指定的元素來(lái)表示跳過(guò)錯(cuò)誤。在網(wǎng)上我可以看到同樣的情況:https ://github.com/tmenier/Flurl/issues/365 你有這個(gè)問(wèn)題的問(wèn)題嗎?謝謝!
查看完整描述

3 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

最典型的方法是創(chuàng)建一個(gè)自定義工廠:


public class UntrustedCertClientFactory : DefaultHttpClientFactory

{

    public override HttpMessageHandler CreateMessageHandler() {

        return new HttpClientHandler {

            ServerCertificateCustomValidationCallback = (_, _, _, _) => true

        };

    }

}

然后在你的應(yīng)用啟動(dòng)中注冊(cè)它:


FlurlHttp.ConfigureClient("https://theapi.com", cli =>

    cli.Settings.HttpClientFactory = new UntrustedCertClientFactory());

FlurlHttpClient默認(rèn)為每個(gè)主機(jī)重用相同的實(shí)例,因此配置這種方式意味著每次調(diào)用都theapi.com將允許使用不受信任的證書。HttpClient與將 an 傳遞給構(gòu)造函數(shù)相比,它的優(yōu)勢(shì)FlurlClient在于它使此配置“偏向一邊”,并且在您以更典型/更簡(jiǎn)潔的方式使用 Flurl 時(shí)工作:


await "https://theapi.com/endpoint".GetJsonAsync();


查看完整回答
反對(duì) 回復(fù) 2022-06-19
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是我對(duì) Flurl 的設(shè)置,它適用于不受信任的證書:


HttpClientHandler httpClientHandler = new HttpClientHandler();

httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, 

  errors) => true;

HttpClient httpClient = new HttpClient(httpClientHandler);

httpClient.BaseAddress = new Uri("https://myaddress.com");

var flurlClient = new FlurlClient(httpClient);


var apiInfo = await flurlClient.Request("apiInfo").GetJsonAsync<ApiInfoDto>();

我創(chuàng)建了自定義 HttpClientHandler,它接受ServerCertificateCustomValidationCallback. 當(dāng)然,您可以在此處理程序中使用其他邏輯。


更新: 使用此設(shè)置,您不能對(duì) URL 使用 Flurl 擴(kuò)展(您不能編寫"http://myadress.com/apiInfo".GetJsonAsync<ApiInfoDto>()。您必須如上所示創(chuàng)建 Flurl 客戶端并使用 Flurl 客戶端進(jìn)行調(diào)用,如我的代碼中所示。用法與 Flurl 擴(kuò)展相同網(wǎng)址。


查看完整回答
反對(duì) 回復(fù) 2022-06-19
?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

接受任何證書的內(nèi)聯(lián)解決方案是:



var myString = await "https://some-server-with-an-invalid-cert.net"

    .AppendPathSegment("/some-file.txt")

    .WithClient(new FlurlClient(new HttpClient(new HttpClientHandler

              {

                  ServerCertificateCustomValidationCallback = (message, cert, chain,

                                                               errors) => true

              })))

    .GetStringAsync();

您可以傳遞與WithClient()默認(rèn)客戶端不同的客戶端配置。在某些情況下,您不想更改默認(rèn)客戶端,而是應(yīng)用屬性,例如僅針對(duì)此特定情況的證書驗(yàn)證。


查看完整回答
反對(duì) 回復(fù) 2022-06-19
  • 3 回答
  • 0 關(guān)注
  • 637 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)