介绍
随着.net core
越来越流行,对.net core
基础知识的了解,实际应用等相关的知识也应该有所了解。所以就有了这篇文章,案例都是来自阅读的书籍,或者实际工作中感觉比较有用的应用。分享亦总结。
本文主要介绍 .net core
相关的网络编程案例。
具体案例
从Web服务器上下载图片
【导语】
运行实例后,同键盘输入 Web
服务器上图片的 URL
,按下 Enter
键后,应用程序会把图片下载到本地并保存到文中。
本实例使用了 HttpWebRequest
类和 HttpWebResponse
类来完成图片下载,这两个类一般是成对使用的。由 HttpWebRequest
对象向服务器发起请求,若服务器回应则返回一个 HttpWebResponse
对象,通过 HttpWebResponse
对象可以以流的方式读取来自 Web
服务器的数据。如果要将数据上传到 Web
服务器,应该使用从 HttpWebRequest
对象中获得的流对象。总结为一句话就是:HttpWebRequest
对象用于向服务器写数据,HttpWebResponse
对象用于读取来自服务器的数据。
【操作流程】
步骤1:新建控制台应用程序项目。
步骤2:获取键盘输入的图片 URL
。
Console.WriteLine("请输入图片的 URL:");
string picUrl = Console.ReadLine();
步骤3:创建 HttpWebRequest
实例。该类没有公共的构造函数,需要通过调用 WebRequest
的 Create
方法或者 CreateHttp
方法来获取 HttpWebRequest
实例的引用。
HttpWebRequest request = WebRequest.CreateHttp(picUrl);
步骤4:设置访问方式为 GET
。
request.Method = "GET";
步骤5:向 Web
服务器发起请求,并获取 HTTP
的相应消息。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
步骤6:读取 Web
服务器响应的数据,并写入文件。
using(Stream respStream = response.GetResponseStream())
{
// 存入文件
using(FileStream fs = new FileStream("down.jpg", FileMode.Create))
{
respStream.CopyTo(fs);
}
}
步骤7:运行应用程序项目,输入图片 URL
,然后按下 Enter
键,图片即被下载到本地文件。
使用HttpClient类向Web服务器提交数据
【导语】
HttpClient
类对 HTTP
通信中的常用操作进行了封装,为每一种请求定义了对应的方法,具体方法如下。
(1)GetAsync
方法:以 GET
方式发送 HTTP
请求。
(2)PostAsync
方法:以 POST
方式发送 HTTP
请求。
(3)PutAsync
方法:以 PUT
方式发送 HTTP
请求。
(4)DeleteAsync
方法:以 DELETE
方式发送 HTTP
请求。
(5)PatchAsync
方法:以 PATCH
方式发送 HTTP
请求。
其中,最常用的方法是 GetAsync
与 PostAsync
两个方法。此外,HttpClient
类还提供了 SendAsync
方法,此方法比较灵活,在发送 HTTP
请求前可以做更多的配置。
要提交的数据正常将由 HttpClient
类保证,该类是抽象类,需要根据实际要提交内容的格式来选择,例如,ByteArrayContent
类用于包装字节数组,StringContent
类用于包装字符串内容,若希望以流的形式提交数据,还可以用 StreamContent
类。
本实例将演示如果使用 HttpClient
类以 POST
方式向Web服务器提交字符串数据。
【操作流程】
步骤1:创建 HttpClient
实例。
using (HttpClient client = new HttpClient())
{
...
}
步骤2:包装要发送的数据内容。
StringContent content = new StringContent("小李", System.Text.Encoding.UTF8);
本例要发送的是字符串内容,因此选用 StringContent
类进行包装。
步骤3:向服务器发起请求,方式为 HTTP
- POST
。
string url = "<目标URL>";
HttpResponseMessage response = await client.PostAsync(url, content);
上述代码中,请将<目标URL>替换为实际的测试地址。
步骤4:调用 PostAsync
方法后,异步返回 HttpResponseMessage
对象,表示服务器回应的消息,从 HttpResponseMessage
对象的 Content
属性中可以得到服务器返回的数据正文。
string respmsg = await response.Content.ReadAsStringAsync();
Console.WriteLine($"提交成功,服务器回应消息:{respmsg}");
总结
本文到这里就结束了,下一篇将介绍反射与Composition的知识案例。