最近用C#做完了一个项目,分享一个良心技术博客。
在这个可用的HttpUitls工具类的基础上,老陌补充了几行(authorization+验证证书),亲测可用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Web;
using System.Windows.Forms;
namespace Test
{
class HttpUitls
{
public static string Get(string Url)
{
// System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
//System.GC.Collect();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Proxy = null;
request.KeepAlive = false;
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8";
request.AutomaticDecompression = DecompressionMethods.GZip;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
return retString;
}
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
return false;
}
public static string Post(string Url, string Data, string Referer)
{
//添加验证证书的回调方法
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.Referer = Referer;
byte[] bytes = Encoding.UTF8.GetBytes(Data);
request.ContentType = "application/json";
// request.ContentType ="application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
//Add authorization
string username = "username";
string password = "password";
//注意这里的格式为 "username:password"
string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
mycache.Add(new Uri(Url), "Basic", new NetworkCredential(username, password));
request.Credentials = mycache;
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
X509Certificate cerBook = new X509Certificate(Application.StartupPath+@"\mycert.pfx", "password"); //證書放在exe同一路徑
request.ClientCertificates.Add(cerBook);
Stream myResponseStream = request.GetRequestStream();
myResponseStream.Write(bytes, 0, bytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
return retString;
}
}
}
另,分享一个JSON转换C#实体类的工具:JSON转C#实体类-BeJSON.com
私服下载地址:http://www.sonatype.org/nexus/Go/一、下载maven私服并解压到指定的文件夹二、配置环境变量右击电脑属性 - 高级系统设置 - 环境变量 -在系统环境变量找到PATH选择编辑。写上刚解压的文件路径,分号结尾。三、打开CMD输入nexus出现上方提示说明环境变量配置成功。四、安装n
我在网上看到大多数专家讲解的都是设置setOnScrollListener滑动监听,但是个人感觉设置滑动监听比较麻烦,感觉使用事件分发来做比较简单;实现思路:首先来线下整体布局,是使用一个横向的线性布局里面放了两个ListView,使用权重让两个ListView平分屏幕的宽。如果想使用View的事件分发,必须自定义这个View,这里面实现起来也非常简单,只是自定义一个线性布局继承系_listview 循环滚动 三行三列
遇到这样一道题:先序序列为a,b,c,d的不同二叉树的个数是多少?那到这个题首先要知道二叉树的先序遍历,中序遍历都需要使用栈,二叉树的中序遍历https://blog.csdn.net/qq_26460841/article/details/84138310..._先序入栈,中序出栈
原文地址:http://hedengcheng.com/?p=771#_Toc374698322背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨
Math.Floor()取整Math.Round()是四舍五入取整_.net 浮点数取整数
libmp3lameffmpegUnknown encoder ‘libmp3lamemp3ogg_unknown encoder 'libmp3lame
物联网拟辉光管时钟_拟辉光管时钟
ssl协议SSL: (Secure Socket Layer)安全套接层,ssl是一套安全协议,被应用层调用,当http调用ssl协议时被称为https,当ftp调用ssl协议时被称为sftp。 lls是一个协议的集合 ,其中包括: Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换 ChangeCipherSpec 协议:一条消息表明握手协议已
1、首先,机器学习系统是训练出来的,而不是明确的有代码编写出来;它的迅速发展来自更好更快的硬件和更大更多的数据集。但是由于经常需要处理大量的数据集,传统的统计分析(贝叶斯分析)是不切实际的,而深度学习呈现较少的统计学理论;并且以工程为导向;从而发展的极为迅速;2、机器学习的三个要素主要是输入数据点,预期输出的示例,衡量算法好坏的方法;3、机器学习模型将输入数据变换为有意义的输出,也就是为了数据寻找合适的表示——对数据进行变换;其中的学习指的就是寻找更好的数据表示的自动搜索过程;4、机器学习是从数_机器学习系统可以是训练出来
prim算法构造最小生成树1.问题假设G=(V,E)是连通的,TE是G上最小生成树中边的集合。算法从U={u0}(u0∈V)、TE={}开始。重复执行下列操作:在所有u∈U,v∈V-U的边(u,v)∈E中找一条权值最小的边(u0,v0)并入集合TE中,同时v0并入U,直到V=U为止。此时,TE中必有n-1条边,T=(V,TE)为G的最小生成树。2.解析算法过程如下图所示:(1)图..._下面是一个有6个节点的图,各节点之间的边及权值如图所示,试用k方法求这个图的最小
转自:https://blog.csdn.net/u19xiaolr/article/details/102665406另一个:https://blog.csdn.net/ribut9225/article/details/52640438语法:Syntaxservicereference.GetURL ( urlname, data )Argument..._pb geturl
前言最近业余在做一个基于.NETCore的搜索项目,奈何基层代码写好了,没有看起来很华丽的数据供测试。很巧的也是博客搜索,于是乎想到了博客园。C# 也能做做页面数据抓取的,不过在博客园看到的大部分都是python实现,所以就临时想了一下看看python到底是什么东东。不看基础语法,不看语言功能,直接上代码,哪里不会搜哪里。代码完成总共用时大概4个小时,其中搭建环境加安装BeautifulSoup大..._python爬虫和数据分析哪个赚钱