随着.net core
越来越流行,对.net core
基础知识的了解,实际应用等相关的知识也应该有所了解。所以就有了这篇文章,案例都是来自阅读的书籍,或者实际工作中感觉比较有用的应用。分享亦总结。
本文主要介绍 .net core
相关的网络编程案例。
【导语】
运行实例后,同键盘输入 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
类对 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的知识案例。