.net-请求https接口的时候提示基础连接已经关闭:连接被意外关闭

问题描述

请求https接口的时候提示基础连接已经关闭:连接被意外关闭

我把做好的.net项目部署到IIS上,项目中有POST请求别人的https接口,然后就提示:
基础连接已经关闭:连接被意外关闭,搞了一天了,都不知道怎么解决,望大神来拯救我把

解决方案

将超时设置的稍微大一些试试看

解决方案二:

private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        return true; //总是接受
    }

    public string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
    {
        // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

        //  System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
        //utilHelper utilHelper = new DAL.utilHelper();
        //utilHelper.SetCertificatePolicy();
        string ret = string.Empty;
        try
        {
            byte[] byteArray = dataEncode.GetBytes(paramData); //转化
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(postUrl);
            if (postUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                ServicePointManager.ServerCertificateValidationCallback =
                        new RemoteCertificateValidationCallback(CheckValidationResult);
            }
            webReq.KeepAlive = false;
            //webReq.ProtocolVersion = HttpVersion.Version11;
            webReq.Method = "POST";
            webReq.Timeout = 1000000;
            System.Net.ServicePointManager.Expect100Continue = false;
            //  webReq.KeepAlive = false;
            webReq.ContentType = "application/json";// "application/json";//application/x-www-form-urlencoded
            //   ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
            //if (postUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            //{
            //    logger.Error("设置了");

            //   // webReq.ProtocolVersion = HttpVersion.Version10;
            //}
            webReq.ContentLength = byteArray.Length;
            Stream newStream = webReq.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);//写入参数
            // newStream.Close();
            HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), dataEncode);
            ret = sr.ReadToEnd();
            sr.Close();
            response.Close();
            newStream.Close();
        }
        catch (Exception ex)
        {
            logger.Error("POST异常:" + ex.Message);
        }
        return ret;
    }

            这是我的post请求代码,谁能救救我……

解决方案三:

楼主是想在自己的服务器去请求另一个服务器是么

一般这个问题就这几个方面:
1.可能的referer跟cookie,这2个可能对方服务器也许要检查
不过你说本地没问题就先跳过
2.参数问题,抓包看看自己的请求跟浏览器是否一致
我这里是说记录发布后的请求数据
3.get请求可以不设置contenttype和useragent,但是post一般都需要,楼主没有加上
4。ProtocolVersion = HttpVersion.Version10; //这个好像以前看周公文章说过,可以避免https请求报错,具体忘记了,最好加上

解决方案四:

感觉不是超时的问题,可能是权限的问题

解决方案五:

public string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
{
string ret = string.Empty;
try
{
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(postUrl);
if (postUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(CheckValidationResult);
}
webReq.KeepAlive = false;
webReq.ProtocolVersion = HttpVersion.Version10;
//webReq.ProtocolVersion = HttpVersion.Version11;
webReq.Method = "POST";
webReq.Timeout = 1000000;
// ServicePointManager.CheckCertificateRevocationList = true;
webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 4.0.30319;)";
webReq.ContentType = "application/json";// "application/json";//application/x-www-form-urlencoded
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数

            HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), dataEncode);
            ret = sr.ReadToEnd();
            sr.Close();
            response.Close();
            newStream.Close();
            webReq.Abort();

        }
        catch (Exception ex)
        {
            logger.Error("POST异常:" + ex.Message);
        }

        return ret;
    }

解决方案六:

这个https请求可以访问到吗?用浏览器console请求试试

时间: 2024-08-03 19:56:20

.net-请求https接口的时候提示基础连接已经关闭:连接被意外关闭的相关文章

ios-iOS请求https接口,为什么用charles或者fiddler等抓包工具截取的数据是明文的?

问题描述 iOS请求https接口,为什么用charles或者fiddler等抓包工具截取的数据是明文的? 是客户端需要设置什么?还是说服务器那边的问题? 解决方案 fiddler用的是中间人攻击的方式截获的数据.你浏览器中还可以直接看到明文呢.https只要是保障传输过程安全 解决方案二: 你的网站是你自己搭建的吗?你可以参考一下https加密原理 加密不是简单的用了https就可以了,https只是提供一种协议.加密需要密钥,如果网站没有证书,那怎么去加密,并且保证客户端能够解密呢.

ssl 安全通道-请求https网站 提示:请求被中止: 未能创建 SSL/TLS 安全通道。

问题描述 请求https网站 提示:请求被中止: 未能创建 SSL/TLS 安全通道. 解决方案 http://blog.sina.com.cn/s/blog_48212cbe0100ezd7.html 解决方案二: 对应ssl服务器端跟你的客户端的ssl连接是否成功?你客户端是不是验证证书失败了

HTTPS接口加密和身份认证(转)

HTTPS接口加密和身份认证 对HTTPS研究有一段时间了,在这里写下一些收集的资料和自己的理解.有不对的地方希望斧正. 1.为什么要使用HTTPS代替HTTP 1.1HTTPS和HTTP的区别 https协议需要到CA申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443. http的连接很简单,是无状态的:HTTPS协议是由SS

android utils 请求https的问题

问题描述 android utils 请求https的问题 使用xUtils 2.6 框架请求接口,地址是https的 出现javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x61078d10: I/O error during system call, Connection reset by peer 这个错误,搜索了很多结果,不知道如何解决, 有人遇到过这样的问题吗?是怎么解决的呢 解决方案 Android--https请求And

java后台请求https协议返回xml怎么解决?

问题描述 java后台请求https协议返回xml怎么解决? 我在做一个跟第三方支付对接,现在做到了查询支付结果这里,它们给的接口是异步请求他们的地址,但是他们的协议是https的,直接ajax请求没有权限.后台我又在后台请求,结果报ssl错误,我的jdk版本是1.7_11版本的,tomcat5.5的,请求地址是https://payment.dinpay.com/MQueryOrder.do 返回一段xml,求高手帮我在后台请求这个地址,然后把这个xml以字符串的形式返回,非常感谢

java-微博粉丝服务平台扩展开发过程中遇到请求微博接口的400和未知源问题!

问题描述 微博粉丝服务平台扩展开发过程中遇到请求微博接口的400和未知源问题! 基于微博粉丝服务平台扩展开发过程中遇到请求微博接口的400和未知源问题! 希望各路大侠前来搭救!多谢! java.io.IOException: Server returned HTTP response code: 400 for URL: https://m.api.weibo.com/2/messages/menu/show.json?access_token=(此处略去) at sun.net.www.pro

JAVA利用HttpClient进行POST请求(HTTPS)实例_java

最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. 1.写一个SSLClient类,继承至HttpClient package com.pcmall.service.sale.miaomore.impl; import java.security.cert.CertificateExcept

java怎么请求https获取响应的文件流呢?

问题描述 java怎么请求https获取响应的文件流呢? 现在有一个https的地址,请求这个地址后返回一个文件流,试着用了httpclient发送https请求,然后在返回的http实体中httpEntity.getContent获取到了一个Inputstream,接收了这个流后,没有任何东西返回. 有什么其他的办法吗? 解决方案 确认后台是否返回数据流了 解决方案二: 先查看一下返回了数据没,用其它测试工具看是否也没返回 解决方案三: 把流的内容读出来,输出到控制台或者文件中看看.

http协议-最近在学微信公众平台,想请问在代码中请求微信接口该怎么做,比如获取token

问题描述 最近在学微信公众平台,想请问在代码中请求微信接口该怎么做,比如获取token 最近在学微信公众平台,想请问在代码中请求微信接口该怎么做,比如获取token 解决方案 参考微信官方给出的开发者文档,对着调用接口就行了. 文档路径:http://mp.weixin.qq.com/wiki/home/index.html 网上有微信公众平台开发的教程例子,找一个跟着做就好了. 参考:http://blog.csdn.net/pamchen/article/details/38718947 解