C#学习 【HttpClient学习】

简单的说几句:由于之前一直做的是PC端的APP,没有做过WEB方面的项目,一直对类似抢票软件这样的程序很感兴趣,很想弄一款抢手机啊,秒杀啊的APP出来。之前做过一个类似按键精灵功能的APP,就是不停的模拟鼠标点击网页中的按钮。什么时候能够模拟浏览器来发送请求呢,一直没弄明白。现在C#中的HttpClient(微软文档)可以实现这样的功能了。。。当然学习它还是为了项目,项目中有需要个设备通信,采用的是HTTP的方式。

根据微软的文档说明使用该接口,必须要.NET 4.5 中的System.Net.Http.dll,所以运行时估计还要装Microsoft.NET Framework 4.5(可能有别的办法)

主要的方法 GET 和 POST
1.GetAsync方法

HttpClient httpClient = new HttpClient();
HttpResponseMessage response =new HttpResponseMessage();
try
{
    //Get
    response = httpClient.GetAsync(strUrl).Result;
    strTemp = response.Content.ReadAsStringAsync().Result;
}
catch (Exception ex)
{
} 

2.PostAsync方法(附带XML格式的数据)

HttpClient httpClient = new HttpClient();
HttpResponseMessage response =new HttpResponseMessage();
string xmlData = @"要附带的数据。。。";
try
{
    StringContent postContent = new StringContent(xmlData);
    postContent.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
    response = httpClient.PostAsync(strUrl,postContent).Result;

    strTemp = response.Content.ReadAsStringAsync().Result;
}
catch (Exception ex)
{
} 

以上查找度娘,大把大把的例子。strTemp 返回的就是你访问页面返回的数据,根据strTemp 来取需要的数据,这么可以用的c#学习【XML处理】(可能会有这么一篇吧)读写XML,不经感慨C#封装的功能真特么丰富啊。

遇到的问题:
1. 用get或者post 一访问就异常,不知道什么原因 ex.Message,文言都是“出现一个或多个错误”,说了等于没说。后来百度 查到应该查看ex.InnerException中的提示错误,这里面说的比较详细,一看就明白。
什么网址不对,服务器关闭,基础连接已经关闭: 未能为 SSL/TLS 安全通道建。。。,看异常再处理。

这边说下最后一个错误吧,因为项目中用的设备开启后,声音吵的一比,震的耳朵疼,所以刚开始没连设备,就用假数据吭哧吭哧的编码,最后打算跑下真数据时,开机后没有一个能够URL能够访问的,都是异常。整个办公室吵的不行啊,又不知道为什么异常,整个人都不好了。。。后来发现之前测试的网页都是http://的,而设备的接口都是https://,https://的URL需要验证证书的,所以一直出现SSL的问题。
解决办法:在调用POST或GET方法前,调用下Util.SetCertificatePolicy();

//取消证书限制
public static class Util
{
   public static void SetCertificatePolicy()
   {
       ServicePointManager.ServerCertificateValidationCallback
                  += RemoteCertificateValidate;
   } 
   private static bool RemoteCertificateValidate(
      object sender, X509Certificate cert,
       X509Chain chain, SslPolicyErrors error)
   {
       return true;
   }
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值