2011-07-25 9 views
4

HTTPSページに接続しようとしました。 C#では、私はF#にこれを適応させるにはどうすればよいF#を使用して接続するときにSSL証明書を受け入れるにはどうすればよいですか?

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

ラインで簡単にHTTPSに接続するためのC#を要求する行を書くことができますか?

open System.Net 
open System.IO 

let url = "https://..." 

let mutable request = HttpWebRequest.Create(url) 
request.Method <- "GET" 
request.ContentType <- "multipart/form-data" 

ServicePointManager.ServerCertificateValidationCallback = fun -> true ???? 

let mutable resp = request.GetResponse() 

let fn = 
    for i = 1 to 10 do 
     request <- WebRequest.Create(url) 
     resp <- request.GetResponse() 

答えて

11
ServicePointManager.ServerCertificateValidationCallback <- 
    System.Net.Security.RemoteCertificateValidationCallback(fun _ _ _ _ -> true) 

次あまりにも動作します:パターンマッチングは、関数の引数のために発生し、あなたはすべての4つを無視しているので

public delegate bool RemoteCertificateValidationCallback(
    Object sender, 
    X509Certificate certificate, 
    X509Chain chain, 
    SslPolicyErrors sslPolicyErrors 
) 

System.Net.ServicePointManager.ServerCertificateValidationCallback <- 
    (fun _ _ _ _ -> true) //four underscores (and seven years ago?) 

RemoteCertificateValidationCallbackは、次のシグネチャがありますパラメータの代わりに、それぞれにwildcard pattern(アンダースコア)を代入することができます。これはイディオマトパラメータが使用されていないことを示すic方法。

+0

あなたはこれにどのようにしてコメントしますか? – unj2

+0

@kunjan:はい。私が加えた説明は十分ですか? – Daniel

関連する問題