post到https的一个小坑

  一个小坑,坑了我半天时间

本地用的是.net2.0,post按照正常的httpwebrequest方式写没有问题,但是发布到服务器上是.net4.0,于是开始报错“基础连接已关闭:发送时发生错误”。

做了几个修改,于是成功。

1、添加TLS

2、添加httpversion11

3、url改为IP地址(这个不确定有没有关系)

post方法如下:

///zhhprivate string Post(string url, string json)
        {
            System.Net.HttpWebRequest webRequest = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;//关键修正
            System.Net.ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

            webRequest.Method = "POST";
            webRequest.ContentType = "application/json;charset=UTF-8";
            webRequest.ServicePoint.Expect100Continue = false;
            webRequest.ProtocolVersion = System.Net.HttpVersion.Version11;//关键修正
            webRequest.Timeout = 20000;
            webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
            webRequest.KeepAlive = false;
            string responseData = null;
            try
            {
                using (Stream requestStream = webRequest.GetRequestStream())
                {
                    byte[] data = System.Text.Encoding.ASCII.GetBytes(json);
                    requestStream.Write(data, 0, data.Length);
                }
                System.Net.HttpWebResponse response = webRequest.GetResponse() as System.Net.HttpWebResponse;
                using (Stream responseStrem = response.GetResponseStream())
                {
                    StreamReader responseReader = new StreamReader(responseStrem, System.Text.Encoding.UTF8);
                    responseData = responseReader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return responseData;
        }
        private bool CheckValidationResult(object sp, System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain req, System.Net.Security.SslPolicyErrors sslError)
        {
            return true;
        }

  

时间: 2024-10-16 17:39:40

post到https的一个小坑的相关文章

关于sniff函数的一个小坑

最近在用scapy模块写一个关于WiFi的脚本时用到sniff函数,其中遇到了一个小坑,记录如下: sniff函数是在指定网卡上每次嗅探到一个数据包后然后将它传给prn指定的函数. 原文地址:https://www.cnblogs.com/erfze/p/10090910.html

CI load->view();的一个小坑。。。

CI load->view()  很智能,如果加载多个视图  他会全部读完再按顺序载入所有视图 但这里有一个小坑,底层会遍历你的函数,看有多少视图 再决定当前的视图是否为最后一个, 如果你的代码中有die exit这个的语句, 这个遍历就会被近中止, 所有的视图就都不会执行 切记 切记.. 如果想要中断这种机制,  直接执行视图,不执行下面的语句, : 加上$this->output->_display();就好了 但是这样就会失去灵活性. 谨慎用.

go的变量redeclare的问题,golang的一个小坑

go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int   然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会默认它的类型 下面看一段代码,我们先声明一个变量a,然后再重新声明变量a,b,在这个函数中,变量a被声明了2次,成为a的重声明(redeclare),执行结果为23 package main import ( "fmt" ) func main(){ a:=1 a,b:=2,3 fmt.P

可能你不知道的字符串中的一个小坑!!!

简单的记录一个小问题,一直居然都没怎么注意,心底对自己深深的说了一句:"你真菜"! 平时日常我们接触到的数组去重太常见了.然后对于字符串的去重,也是可能用的IndexOf.或者转成数组去查重,然后再转换回来! 在尝试用其他方法的时候遇见一个小问题,在此记录下来与大家分析! var str = '521213756406'; for(var i = 0; i < str.length-1;i++){ for(var j = i+1;j < str.length; j++){

js变量提升的一个小坑

好久没写博客了,原本想实训结束能对整个实训项目认真总结一下,没想到回到学校一点都不轻松,最近在制作网页版简历,遇到了一个小问题,现在不总结以后肯定忙得顾不上,所以长话短说,抓紧时间写下来. 对js语法比较熟的同学可能都知道:js是没有块级作用域的,有一个新手很容易出错的地方 for(var i = 0 ; i < 10 ; i ++){ setTimeout(function(){ console.log(i) },1000*i) } 这段代码会输出10个10,而不是期望的1,2,...,10,

React事件中遇到的一个小坑

一个点击按钮数字加1的小程序,我在第一次看书中的这段代码的时候,第一眼我就对this.handleClick = this.handleClick.bind 这句话表示有点疑问,类中handleClick 方法不是定义在原型对象中的嘛,实例对象显示地调用方法this不应该就是指向对象自身吗,再添这句话岂不是多此一举 直到我上手去敲了一遍示例代码,特意把上面这句话删除发现点击按钮的时候报错,undefined没有setState这个属性,这就很奇怪了呀...是不是应该this.handleClic

php当数据库update遇到并发,一个小坑

有一个答题的小项目,表的字段如下: id 用户id times 答题次数 questions 回答的问题id,这是一个php serialize()的字符串 当用户答完题像后端提交结果时,构建的post包如下: { 'id':1, 'questionid':38 } 后台逻辑如下: $user = User::findFirst("id = ?1",array('id'=>$_POST['id']));//取得用户模型 $questions = unserialize($user

[Unity热更新]ulua学习笔记01:一个小坑

看了一下以前写的文章,发现都好水啊..我也想写出能真正帮到别人的文章,但没办法啊,自己的脑子太笨了..希望可以通过不断学习,终有一天能写出点好文章! 最近在学习unity中的热更新,既然大神都说ulua效率最高(就现在来说),那就学习ulua吧!首先要下载的是ulua的包,现在的最新版本是1.08,而且根据官网上说的,网上流行的1.03/1.05含有大量的bug,所以我选择了最新的版本,谁知道就掉进了第一个坑! 因为是菜鸟,所以先复制一下网上的代码看看效果如何,结果碰到这样的错误: 搜索了这些错

go指针的一个小坑

几乎可以肯定的说,go语言中除了闭包在引用外部变量的时候是传引用的,其他的时候都是传值的.如果你说形参可以定义为指针.好吧,那么告诉你这个指针的值其实是按照传值的方式使用的. 下面看个很浅显的例子: func stillTest(v int) { v = v + 100 } i := 100 fmt.Println("i ", i) stillTest(i) fmt.Println("after i ", i) 输出: i 100 after i 100 两个值是不