HttpWebRequest 设置代理后访问https的网址报错

Caoxp_papa 2019-03-03 11:33:27
需要通过代理ip来访问网页。
访问http的网站是正常的,但是访问https的网站就会报错,代码如下:

var request = (HttpWebRequest)WebRequest.Create(new Uri("https://www.baidu.com"));
request.Accept = "*/*";

request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");//定义gzip压缩页面支持
request.ContentType = "application/x-www-form-urlencoded";//定义文档类型及编码
request.AllowAutoRedirect = false;

request.Timeout = 5000;
request.KeepAlive = true;
request.Method = "GET";
request.Proxy = new WebProxy("111.230.113.238", 9999);

request.ServicePoint.ConnectionLimit = int.MaxValue;//定义最大连接数

var response = (HttpWebResponse)request.GetResponse();


错误:


怎么解决呢?
...全文
675 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuan.ye 2019-03-04
  • 打赏
  • 举报
回复
一般有两个做法: 1、忽略证书; 2、证书加密数据。 一般和钱不相关可以忽略证书。
  • 打赏
  • 举报
回复
百度了一下这个结果你可以试一下: https://www.cnblogs.com/wenanry/archive/2009/02/13/1390160.html
泡泡龙 2019-03-04
  • 打赏
  • 举报
回复
4XX错误一般是request出错了
橘子皮... 2019-03-04
  • 打赏
  • 举报
回复
根本不是证书问题,这个我遇到过好多次,所以说很多坑只有自己百度自己填,csdn大多数人都是乱回答
xuan.ye 2019-03-04
  • 打赏
  • 举报
回复
引用 3 楼 Caoxp_papa 的回复:
[quote=引用 2 楼 yeness 的回复:] 一般有两个做法: 1、忽略证书; 2、证书加密数据。 一般和钱不相关可以忽略证书。
具体代码怎么改?[/quote] 个人比较喜欢 spring 安利一下 1、添加spring.rest nuget PM> Install-Package Spring.Rest -Version 1.1.1 2、代码,本地用蓝灯测试了一下是通过的,环境不同可能设置有所不同

using Spring.Http;
using Spring.Http.Client;
using Spring.Rest.Client;
using System.Net;

namespace postHttps
{
    class Program
    {

        static bool IsProxy = true;
        static void Main(string[] args)
        {
            try
            {
                // 代理
                WebClientHttpRequestFactory requestFactory = new WebClientHttpRequestFactory();
                requestFactory.Proxy = new WebProxy("http://127.0.0.1:1765");
                requestFactory.Proxy.Credentials = new NetworkCredential("userName", "password", "domain");


                RestTemplate restTemplate = new RestTemplate();
                if (true == IsProxy)
                {
                    restTemplate.RequestFactory = requestFactory;
                }
               
                ((WebClientHttpRequestFactory)restTemplate.RequestFactory).UseDefaultCredentials = true;

                object[] obj = null;

                // https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13611117777
                // https://www.baidu.com
                HttpResponseMessage<string> html = restTemplate.PostForMessage<string>(@"https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=13611117777", obj );

                System.Console.Write(html.Body);
                System.Console.ReadLine();
            }
            catch (System.Exception e)
            {

            }
        }


    }
}

个人分析“当前服务器全部或者部分接口”可能需要证书。
Caoxp_papa 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 yeness 的回复:
一般有两个做法: 1、忽略证书; 2、证书加密数据。 一般和钱不相关可以忽略证书。
具体代码怎么改?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧