【问题标题】:How to send an HTTPS GET Request in C#如何在 C# 中发送 HTTPS GET 请求
【发布时间】:2010-10-30 22:34:13
【问题描述】:

相关:how-do-i-use-webrequest-to-access-an-ssl-encrypted-site-using-https

如何在 C# 中发送 HTTPS GET 请求?

【问题讨论】:

    标签: c# .net ssl httpwebrequest


    【解决方案1】:

    在 url 末尾添加?var1=data1&var2=data2 以通过 GET 向页面提交值:

    using System.Net;
    using System.IO;
    
    string url = "https://www.example.com/scriptname.php?var1=hello";
    
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream resStream = response.GetResponseStream();
    

    【讨论】:

    • 注意:这适用于 HTTP,我用 HTTPS url 测试了这段代码,但它不起作用。打算试试 WebClient 看看它是否适用于 SSL
    • 使用本页地址。 Stackoverflow 在 https 上运行,您将收到 200 OK 响应 string url = "https://stackoverflow.com/questions/...";。成功了!
    • 请注意,WebRequest 和 HttpWebRequest 不再推荐用于新项目。 Microsoft 建议改用较新的 HttpClient 类:docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient
    【解决方案2】:

    我更喜欢使用WebClient,它似乎可以透明地处理SSL:

    http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

    这里有一些故障排除帮助:

    https://clipperhouse.com/webclient-fiddler-and-ssl/

    【讨论】:

    • 发布实际代码,链接可能会过时。
    【解决方案3】:

    使用 HttpClient 类的简单获取请求

    using System.Net.Http;
    
    class Program
    {
       static void Main(string[] args)
        {
            HttpClient httpClient = new HttpClient();
            var result = httpClient.GetAsync("https://www.google.com").Result;
        }
    
    }
    

    【讨论】:

    • 这是http调用还是https调用?
    • 这将导致异常说 SLS/TLS 问题。
    猜你喜欢
    • 2011-05-13
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多