nanoFramework.System.Net.Http.Server 1.5.145

前缀已保留
dotnet add package nanoFramework.System.Net.Http.Server --version 1.5.145                
NuGet\Install-Package nanoFramework.System.Net.Http.Server -Version 1.5.145                
此命令旨在在Visual Studio的包管理器控制台中使用,因为它使用NuGet模块的Install-Package版本。
<PackageReference Include="nanoFramework.System.Net.Http.Server" Version="1.5.145" />                
对于支持包引用的项目,将此XML节点复制到项目文件中以引用包。
paket add nanoFramework.System.Net.Http.Server --version 1.5.145                
#r "nuget: nanoFramework.System.Net.Http.Server, 1.5.145"                
#r指令可以在F# Interactive和Polyglot Notebooks中使用。将其复制到交互式工具或脚本的源代码中,以引用包。
// Install nanoFramework.System.Net.Http.Server as a Cake Addin
#addin nuget:?package=nanoFramework.System.Net.Http.Server&version=1.5.145

// Install nanoFramework.System.Net.Http.Server as a Cake Tool
#tool nuget:?package=nanoFramework.System.Net.Http.Server&version=1.5.145                

Quality Gate Status Reliability Rating License NuGet #yourfirstpr Discord

nanoFramework logo


欢迎使用.NET nanoFramework System.Net.Http库仓库

构建状态

组件 构建状态 NuGet 包
System.Net.Http Build Status NuGet
System.Net.Http.Client Build Status NuGet
System.Net.Http.Server Build Status NuGet

使用示例

此库中的API、类和命名空间尽可能遵循.NET的,但有一些例外:不包含异步调用、泛型和Task,以及缺少具有CancelationToken参数的重载方法。名称的变化反映这一点,通过移除Async后缀,不返回Task,以及缺少带CancelationToken参数的重载方法。

还值得一提的是,需要向HttpClient传递CA根证书,以便能够验证服务器证书。

HttpClient调用REST服务

HttpClient非常容易连接和消耗REST服务。为了使用它,必须创建对象并执行调用。请注意,HttpClient在每个应用程序生命周期内都应该被重用。不需要每次调用时都创建新实例。

static readonly HttpClient _httpClient = new HttpClient();

传递CA根证书,以允许验证安全服务器证书。CA根证书也可以来自资源中的二进制文件或文本文件。

_httpClient.HttpsAuthentCert = new X509Certificate(
@"-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----");

[!注意]

要从服务器获取根证书,如果您安装了OpenSSL,可以运行以下命令:openssl s_client -connect the.server-to-get-the-cert.com:443 -showcerts 这将显示所有使用的根证书并以PEM格式展示。然后您可以复制/粘贴所需的根证书。

可以为每个请求添加将与之一起发送的HTTP头。

_httpClient.DefaultRequestHeaders.Add("x-ms-blob-type", "BlockBlob");

执行HTTP GET请求

以下是一个读取一些内容的字符串的HTTP请求的示例

HttpResponseMessage response = _httpClient.Get("https://httpbin.org/get");
response.EnsureSuccessStatusCode();
var responseBody = response.Content.ReadAsString();

上面的调用将返回类似于以下的内容,可以在Visual Studio中通过调用Debug.WriteLine(responseBody)来输出

{
  "args": {}, 
  "headers": {
    "Host": "httpbin.org", 
    "X-Amzn-Trace-Id": "Root=1-6214aad3-38e5f8357bdf90530300eb5f", 
    "X-Ms-Blob-Type": "BlockBlob"
  }, 
  "origin": "5.249.47.208", 
  "url": "https://httpbin.org/get"
}

请注意调用response.EnsureSuccessStatusCode();。如果HTTP请求的状态码不是成功的,这将抛出HttpRequestException

执行HTTP POST请求

以下是一个执行POST请求并将一些JSON内容发送到端点的HTTP请求的示例。

var content = new StringContent("{\"someProperty\":\"someValue\"}", Encoding.UTF8, "application/json");
var result = _httpClient.Post("https://httpbin.org/anything", content);
result.EnsureSuccessStatusCode();

需要注意的是,上面的JSON内容以简单的字符串形式呈现,以便简化代码。有一个JSON库可用于帮助将C#类序列化和反序列化,即使是复杂的类。

同样,请注意调用response.EnsureSuccessStatusCode();以确保HTTP请求成功执行。

将二进制内容下载到文件中

使用HttpClient处理二进制内容也非常容易。以下是从网络服务器下载文件的一个示例。

HttpResponseMessage response = _httpClient.Get("https://storage-on-the-cloud.net/file-with-binary-content");
response.EnsureSuccessStatusCode();

using FileStream fs = new FileStream($"I:\\i-am-a-binary-file.bin", FileMode.Create, FileAccess.Write);
response.Content.ReadAsStream().CopyTo(fs);

处理响应

[!重要]您必须处理发送的所有请求的响应。设备内存有限,并且如果不请求,响应内容将不会被处理。根据设备的不同,您可能只有16个请求的机会,否则将会出现内存不足。

以下是一些正确处理响应内容的模式

using HttpResponseMessage response = client.Get(apiUrl);
// do whatever you want
// When the response object won't be used, it will be disposed

也可以为代码块使用明确的using语句

using HttpResponseMessage response = client.Get(apiUrl)
{
  // do whatever you want
  // when exiting the block, the response will be disposed
}

或显式地处理响应

HttpResponseMessage response = client.Get(apiUrl);
// do whatever you want
// Dispose explicitly the content
response.Dispose();

在任何情况下,您都必须确保处理响应内容。

通过反向代理进行调试

当代码部署到MCU时,可能会希望允许设备连接到正在运行IIS Express的开发机器。这可以通过使用诸如此代理之类的代理来实现。请注意,这会导致在使用当前版本的nanoFramework System.Net.Http时向开发机器发送连续请求时出现SocketExceptions。在调试模式下,一个简单的重试机制可以解决这个问题。

反馈和文档

有关文档、提供反馈、问题以及了解如何贡献,请参阅主存储库

加入我们的Discord社区这里

鸣谢

此项目的贡献者名单可在CONTRIBUTORS中找到。

许可协议

nanoFramework类库受MIT许可证的许可。

行为准则

本项目已采用贡献者契约中定义的行为准则,以明确我们社区中预期的行为。有关更多信息,请参阅.NET Foundation行为准则

.NET Foundation

本项目由.NET Foundation支持。

产品 兼容和附加的计算目标框架版本。
.NET Framework net是兼容的。
兼容的目标框架
包含的目标框架(在包中)
了解有关目标框架.NET Standard的更多信息。

NuGet 包 (3)

显示依赖 nanoFramework.System.Net.Http.Server 的前 3 个 NuGet 包

下载
nanoFramework.WebServer

这是一个简单的多线程 WebServer,支持简单控制器和基于事件的调用。非常适合基于 .NET nanoFramework REST API 的项目。支持 HTTPS 和 HTTP。如果需要从本地存储服务文件,请使用 'nanoFramework.WebServer.FileSystem' nuget。

CCSWE.nanoFramework.WebServer

为 nanoFramework 实现的简单异步 Web 服务器。

nanoFramework.WebServer.FileSystem

这是一个简单的多线程 WebServer,支持简单控制器和基于事件的调用。非常适合基于 .NET nanoFramework REST API 的项目。支持所有类型的 Http 方法。非常适合简单的嵌入式 Web 页面,支持存储上的文件(USB、SD 卡、内存)。支持 HTTPS 和 HTTP。如果想要在设备上服务本地文件并支持 System.IO.FileSystem,请使用此版本。否则使用 'nanoFramework.WebServer' nuget。

GitHub 仓库 (1)

显示依赖 nanoFramework.System.Net.Http.Server 的前 1 个最受欢迎的 GitHub 仓库

仓库 星标
nanoframework/Samples
🍬 nanoFramework 团队用于测试、概念验证和其他探索性工作的代码示例
版本 下载 最后更新
1.5.145 91 7/30/2024
1.5.138 626 5/13/2024
1.5.136 186 5/10/2024
1.5.134 401 4/8/2024
1.5.132 147 4/8/2024
1.5.130 248 4/3/2024
1.5.128 147 4/3/2024
1.5.125 550 1/29/2024
1.5.118 334 1/24/2024
1.5.113 2,490 11/10/2023
1.5.110 123 11/9/2023
1.5.108 170 11/9/2023
1.5.106 251 11/3/2023
1.5.104 452 10/10/2023
1.5.102 265 10/4/2023
1.5.99 542 8/8/2023
1.5.97 314 7/27/2023
1.5.95 203 7/27/2023
1.5.84 1,052 2/17/2023
1.5.82 545 1/24/2023
1.5.78 956 12/28/2022
1.5.75 335 12/28/2022
1.5.73 335 12/28/2022
1.5.70 479 12/27/2022
1.5.68 363 12/22/2022
1.5.61 650 11/23/2022
1.5.54 795 10/26/2022
1.5.52 391 10/26/2022
1.5.50 455 10/26/2022
1.5.48 596 10/25/2022
1.5.45 416 10/25/2022
1.5.43 638 10/24/2022
1.5.41 452 10/24/2022
1.5.39 424 10/24/2022
1.5.37 434 10/23/2022
1.5.35 666 10/23/2022
1.5.30 710 10/10/2022
1.5.27 416 10/8/2022
1.5.24 951 9/22/2022
1.5.22 700 9/22/2022
1.5.20 1,301 9/15/2022
1.5.18 480 9/15/2022
1.5.13 1,247 8/5/2022
1.5.10 685 8/4/2022
1.5.8 451 8/4/2022
1.5.6 423 8/4/2022
1.5.4 681 8/3/2022
1.5.2 687 8/3/2022
1.4.0.25 682 8/3/2022
1.4.0.23 1,021 6/13/2022
1.4.0.21 750 6/8/2022
1.4.0.19 703 6/8/2022
1.4.0.14 812 5/26/2022
1.4.0.12 526 5/18/2022
1.4.0.10 531 5/3/2022
1.4.0 979 3/28/2022
1.4.0-preview.52 135 3/28/2022
1.4.0-preview.51 125 3/28/2022
1.4.0-preview.50 120 3/28/2022
1.4.0-preview.48 116 3/28/2022
1.4.0-preview.47 122 3/28/2022
1.4.0-preview.46 121 3/28/2022
1.4.0-preview.44 157 3/17/2022
1.4.0-preview.43 120 3/17/2022
1.4.0-preview.42 135 3/14/2022
1.4.0-preview.41 115 3/14/2022
1.4.0-preview.40 118 3/14/2022
1.4.0-preview.39 122 3/14/2022
1.4.0-preview.37 123 3/14/2022
1.4.0-preview.36 138 3/8/2022
1.4.0-preview.35 122 3/8/2022
1.4.0-preview.33 145 3/4/2022
1.4.0-preview.32 120 3/3/2022
1.4.0-preview.31 126 3/2/2022
1.4.0-preview.29 142 2/28/2022
1.4.0-preview.28 162 2/24/2022
1.4.0-preview.26 145 2/17/2022
1.4.0-preview.24 131 2/17/2022
1.4.0-preview.22 174 2/6/2022
1.4.0-preview.21 143 2/4/2022
1.4.0-preview.19 141 2/4/2022
1.4.0-preview.18 149 1/28/2022
1.4.0-preview.16 139 1/28/2022
1.4.0-preview.15 140 1/28/2022
1.4.0-preview.13 133 1/28/2022
1.4.0-preview.12 141 1/21/2022
1.4.0-preview.6 238 1/12/2022
1.4.0-preview.5 137 1/12/2022
1.4.0-preview.4 135 1/11/2022
1.4.0-preview.3 141 1/11/2022
1.3.7-preview.8 157 1/5/2022
1.3.7-preview.7 156 1/3/2022
1.3.7-preview.6 149 1/3/2022
1.3.7-preview.5 141 1/3/2022
1.3.7-preview.4 144 12/30/2021
1.3.7-preview.3 157 12/28/2021
1.3.6 579 12/3/2021
1.3.6-preview.23 155 12/3/2021
1.3.6-preview.21 148 12/3/2021
1.3.6-preview.20 147 12/2/2021
1.3.6-preview.19 157 12/2/2021
1.3.6-preview.18 150 12/2/2021
1.3.6-preview.17 148 12/2/2021
1.3.6-preview.16 151 12/2/2021
1.3.6-preview.14 151 12/2/2021
1.3.6-preview.12 151 12/2/2021
1.3.6-preview.10 161 12/1/2021
1.3.6-preview.7 154 12/1/2021
1.3.6-preview.1 305 11/11/2021
1.3.5-preview.8 231 10/22/2021
1.3.5-preview.5 192 10/18/2021
1.3.4 860 7/16/2021
1.3.4-preview.78 149 7/16/2021
1.3.4-preview.76 164 7/16/2021
1.3.4-preview.74 159 7/16/2021
1.3.4-preview.72 162 7/15/2021
1.3.4-preview.70 178 7/14/2021
1.3.4-preview.68 318 6/19/2021
1.3.4-preview.66 263 6/19/2021
1.3.4-preview.64 172 6/17/2021
1.3.4-preview.62 210 6/7/2021
1.3.4-preview.60 176 6/7/2021
1.3.4-preview.58 210 6/7/2021
1.3.4-preview.56 545 6/6/2021
1.3.4-preview.54 567 6/3/2021
1.3.4-preview.52 166 6/2/2021
1.3.4-preview.50 183 6/1/2021
1.3.4-preview.48 189 6/1/2021
1.3.4-preview.41 218 5/25/2021
1.3.4-preview.39 227 5/21/2021
1.3.4-preview.37 227 5/20/2021
1.3.4-preview.35 180 5/19/2021
1.3.4-preview.33 173 5/19/2021
1.3.4-preview.31 187 5/19/2021
1.3.4-preview.29 172 5/15/2021
1.3.4-preview.27 163 5/15/2021
1.3.4-preview.25 160 5/15/2021
1.3.4-preview.23 197 5/13/2021
1.3.4-preview.22 161 5/13/2021
1.3.4-preview.20 201 5/11/2021
1.3.4-preview.18 237 5/6/2021
1.3.4-preview.16 160 5/6/2021
1.3.4-preview.14 160 5/5/2021
1.3.4-preview.13 156 5/5/2021
1.3.4-preview.10 255 4/10/2021
1.3.4-preview.9 201 4/9/2021
1.3.4-preview.7 201 4/5/2021
1.3.3-preview.65 249 3/20/2021
1.3.3-preview.62 208 3/19/2021
1.3.3-preview.60 172 3/17/2021
1.3.3-preview.57 164 3/17/2021
1.3.3-preview.55 236 3/2/2021
1.3.3-preview.50 527 1/19/2021
1.3.3-preview.47 213 1/6/2021
1.3.3-preview.40 406 12/29/2020
1.3.3-preview.34 282 12/7/2020
1.3.3-preview.32 210 12/7/2020
1.3.3-preview.27 336 11/3/2020
1.3.3-preview.25 219 10/26/2020
1.3.3-preview.23 256 10/21/2020
1.3.3-preview.17 244 10/20/2020
1.3.3-preview.15 311 10/1/2020
1.3.3-preview.11 234 9/30/2020
1.3.3-preview.9 240 9/30/2020
1.3.3-preview.7 259 9/27/2020
1.3.3-preview.5 264 9/27/2020
1.3.3-preview.1 228 9/24/2020
1.3.2-preview.3 250 9/19/2020
1.3.2-preview.1 261 8/25/2020
1.3.1-preview.6 271 7/2/2020
1.3.1-preview.3 304 6/30/2020
1.3.0 564 6/16/2020
1.3.0-rc.3 285 6/16/2020
1.3.0-preview.11 298 6/16/2020
1.3.0-preview.9 230 6/16/2020
1.3.0-preview.7 227 6/16/2020
1.3.0-alpha.12 295 6/16/2020
1.3.0-alpha.10 226 6/16/2020
1.3.0-alpha.8 232 6/16/2020
1.2.2 463 6/12/2020
1.2.2-preview.41 234 6/12/2020
1.2.2-preview.39 253 6/12/2020
1.2.2-preview.34 244 6/3/2020
1.2.2-preview.33 259 6/3/2020
1.2.2-preview.31 343 5/31/2020
1.2.2-preview.30 242 5/31/2020
1.2.2-preview.29 280 5/31/2020
1.2.2-preview.28 262 5/29/2020
1.2.2-preview.27 259 5/8/2020
1.2.2-preview.26 262 5/8/2020
1.2.2-preview.25 244 4/27/2020
1.2.2-preview.24 243 4/24/2020
1.2.2-preview.23 230 4/21/2020
1.2.2-preview.22 275 4/16/2020
1.2.2-preview.19 267 4/16/2020
1.2.2-preview.18 244 4/14/2020
1.2.2-preview.17 241 4/14/2020
1.2.2-preview.16 241 4/14/2020
1.2.2-preview.15 279 3/25/2020
1.2.2-preview.14 280 3/15/2020
1.2.2-preview.13 248 3/10/2020
1.2.2-preview.12 241 3/10/2020
1.2.2-preview.10 246 3/10/2020
1.2.2-preview.8 239 3/10/2020
1.2.2-preview.7 245 3/10/2020
1.2.2-preview.6 267 3/9/2020
1.2.2-preview.5 270 3/9/2020
1.2.2-preview.4 261 3/6/2020
1.2.2-preview.3 288 1/13/2020
1.2.2-preview.2 270 11/14/2019
1.2.2-preview.1 268 11/12/2019
1.2.2-alpha.42 233 6/12/2020
1.2.2-alpha.40 260 6/12/2020
1.2.2-alpha.38 279 6/11/2020
1.2.2-alpha.35 237 6/3/2020
1.2.2-alpha.34 259 6/3/2020
1.2.2-alpha.32 348 5/31/2020
1.2.2-alpha.31 266 5/31/2020
1.2.2-alpha.30 267 5/30/2020
1.2.2-alpha.29 262 5/29/2020
1.2.2-alpha.28 259 5/8/2020
1.2.2-alpha.27 259 5/8/2020
1.2.2-alpha.26 235 4/27/2020
1.2.2-alpha.23 270 4/16/2020
1.2.2-alpha.21 274 4/16/2020
1.2.2-alpha.20 270 4/16/2020
1.2.2-alpha.19 242 4/14/2020
1.2.2-alpha.18 240 4/14/2020
1.2.2-alpha.17 246 4/14/2020
1.2.2-alpha.16 288 3/25/2020
1.2.2-alpha.15 281 3/15/2020
1.2.2-alpha.14 235 3/10/2020
1.2.2-alpha.13 244 3/10/2020
1.2.2-alpha.11 241 3/10/2020
1.2.2-alpha.10 244 3/10/2020
1.2.2-alpha.9 245 3/10/2020
1.2.2-alpha.8 267 3/9/2020
1.2.2-alpha.7 265 3/9/2020
1.2.2-alpha.6 289 3/9/2020
1.2.1-preview.3 264 11/8/2019
1.2.1-preview.1 275 11/5/2019
1.2.0-preview.3 255 10/18/2019
1.1.0 547 10/17/2019
1.1.0-preview.3 267 10/17/2019
1.0.8-preview.7 262 10/17/2019
1.0.8-preview.5 272 10/15/2019
1.0.8-preview.4 267 9/30/2019
1.0.8-preview.1 275 8/30/2019
1.0.7-preview.1 280 8/30/2019
1.0.6-preview.33 280 8/19/2019
1.0.6-preview.30 284 7/19/2019
1.0.6-preview.26 282 6/23/2019
1.0.6-preview.19 308 6/22/2019
1.0.6-preview.17 311 6/18/2019
1.0.5-preview-028 521 4/5/2019