簡體   English   中英

如何用C ++ / CLI編寫此行?

[英]How to write this line in C++/CLI?

我正在使用Visual C ++調用Web服務。 由於出現此錯誤,我需要繞過無效的SSL證書-

請求失敗。 基礎連接已關閉:無法為SSL / TLS安全通道建立信任關系。

在C#中編寫相同的內容時,我使用了這一行-

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

它為我工作。

如何在Visual C ++中實現同一目標? 如何在Visual C ++中編寫同一行?

您需要顯式創建回調對象,並將其分配給相應的屬性。

using namespace System;
using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Security::Cryptography::X509Certificates;


static bool ValidateServerCertificate(
        Object^ sender,
        X509Certificate^ certificate,
        X509Chain^ chain,
        SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }

int main(array<System::String ^> ^args)
{
    // create callback object, pointing to your function
    System::Net::Security::RemoteCertificateValidationCallback^ clb = gcnew RemoteCertificateValidationCallback(ValidateServerCertificate);
    // assign it to the property
    System::Net::ServicePointManager::ServerCertificateValidationCallback = clb;

    return 0;
}

VS 2010中的C ++ / CLI不支持lambda,因此您必須將委托編寫為普通函數:

using namespace System::Net;
using namespace System::Net::Security;
using namespace System::Security::Cryptography::X509Certificates;

bool returnTrueCallback(
    Object^ sender, X509Certificate^ certificate, X509Chain^ chain,
    SslPolicyErrors sslPolicyErrors)
{
    return true;
}

...

ServicePointManager::ServerCertificateValidationCallback =
    gcnew RemoteCertificateValidationCallback(returnTrueCallback);

暫無
暫無

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

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