HttpClient Received an unexpected EOF or 0 bytes from the transport stream


請求https鏈接時報錯,奇怪的是pc1正常,pc2異常

Unhandled Exception: System.AggregateException: One or more errors occurred. ( Received an unexpected EOF or 0 bytes from the transport stream.) ---> System.IO.IOException: Received an unexpected EOF or 0 bytes from the transport stream.
at System.Net.Security.SslStreamInternal.<FillBufferAsync>g__InternalFillBufferAsync|38_0[TReadAdapter](TReadAdapter adap, ValueTask`1 task, Int32 min, Int32 initial)

 

原因:大概是請求時默認了一個過時了的ssl協議

解決:指定tls 1.0或其他有效協議,參考https://stackoverflow.com/questions/25414907/authenticateasclient-system-io-ioexception-received-an-unexpected-eof-or-0-byt

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        var html = GetClientStringAsync("https://**********").Result;
        Console.Write(html);
        Console.ReadLine();
    }

    public static async Task<string> GetClientStringAsync(string url, string encoding = "utf-8")
    {
        var result = string.Empty;
        var httpClientHandler = new HttpClientHandler
        {
            SslProtocols = System.Security.Authentication.SslProtocols.Tls };
        HttpClient client = new HttpClient(httpClientHandler);
        client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
        var bytes = await client.GetByteArrayAsync(url);
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        result = Encoding.GetEncoding(encoding).GetString(bytes);
        return result;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM