nanoFramework.System.Net.Http.Client 1.5.145

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

// Install nanoFramework.System.Net.Http.Client as a Cake Tool
#tool nuget:?package=nanoFramework.System.Net.Http.Client&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 参数的重载方法。

值得注意的是,为了能够验证服务器证书,需要将 CA 根证书传递给 HttpClient

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();

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

{
  "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请求

以下是一个HTTP请求示例,展示如何将一些JSON内容通过POST请求发送到端点。

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

值得注意的是,上面的JSON内容以简单的字符串形式展示,以简化代码。存在一个JSON库,可以帮助将数据序列化并反序列化到/from C#类中,即使是最复杂的类。

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

将二进制内容下载到文件

使用HttpClient处理二进制内容也很容易。以下是如何从Web服务器下载文件的示例。

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);

释放响应

[!Important]您**必须**释放所有请求发送的响应。设备内存有限,如果不请求释放,响应内容将永远不会被释放。根据设备不同,您可能在内存不足之前只能发送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的开发计算机。可以通过以下代理实现,例如这个代理。请注意,这会导致使用当前版本的strong>nanoFramework System.Net.Http发送连续请求到开发计算机时出现SocketExceptions。在调试模式下添加简单的重试机制可以解决这个问题。

反馈和文档

有关文档、提供反馈、问题和了解如何贡献,请参阅主仓库

加入我们的Discord社区这里

鸣谢

该项目的贡献者列表可在CONTRIBUTORS中找到。

许可证

strong>nanoFramework类库采用MIT许可

行为准则

本项目已采用由贡献者公约定义的行为准则,以阐明我们对社区期望的行为。更多信息请参阅.NET基金会行为准则

.NET基金会

此项目由.NET基金会支持。

产品 兼容和额外的计算目标框架版本。
.NET Framework net 兼容。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于目标框架.NET Standard

NuGet 包

此包未被任何 NuGet 包使用。

GitHub 仓库 (2)

显示依赖于 nanoFramework.System.Net.Http.Client 的前 2 个流行 GitHub 仓库

仓库 星标数
dotnet/samples
.NET 文档引用的示例代码
nanoframework/Samples
🍬 nanoFramework 团队用于测试、概念验证和其他探索性努力的代码示例
版本 下载 最后更新
1.5.145 67 7/30/2024
1.5.138 242 5/13/2024
1.5.136 103 5/10/2024
1.5.134 178 4/8/2024
1.5.132 82 4/8/2024
1.5.130 135 4/3/2024
1.5.128 83 4/3/2024
1.5.125 281 1/29/2024
1.5.118 115 1/24/2024
1.5.113 381 11/10/2023
1.5.110 115 11/9/2023
1.5.108 107 11/9/2023
1.5.106 128 11/3/2023
1.5.104 225 10/10/2023
1.5.102 167 10/4/2023
1.5.99 304 8/8/2023
1.5.97 256 7/27/2023
1.5.95 132 7/27/2023
1.5.84 590 2/17/2023
1.5.82 364 1/24/2023
1.5.78 340 12/28/2022
1.5.75 295 12/28/2022
1.5.73 303 12/28/2022
1.5.70 305 12/27/2022
1.5.68 315 12/22/2022
1.5.61 506 11/23/2022
1.5.54 494 10/26/2022
1.5.52 347 10/26/2022
1.5.50 391 10/26/2022
1.5.48 385 10/25/2022
1.5.45 370 10/25/2022
1.5.43 402 10/24/2022
1.5.41 414 10/24/2022
1.5.39 390 10/24/2022
1.5.37 401 10/23/2022
1.5.35 400 10/23/2022
1.5.30 427 10/10/2022
1.5.27 382 10/8/2022
1.5.24 457 9/22/2022
1.5.22 406 9/22/2022
1.5.20 511 9/15/2022
1.5.18 430 9/15/2022
1.5.13 622 8/5/2022
1.5.10 389 8/4/2022
1.5.8 395 8/4/2022
1.5.6 414 8/4/2022
1.5.4 414 8/3/2022
1.5.2 424 8/3/2022
1.4.0.25 428 8/3/2022
1.4.0.23 588 6/13/2022
1.4.0.21 431 6/8/2022
1.4.0.19 429 6/8/2022
1.4.0.14 486 5/26/2022
1.4.0.12 457 5/18/2022
1.4.0.10 479 5/3/2022
1.4.0 568 3/28/2022
1.4.0-preview.52 126 3/28/2022
1.4.0-preview.51 117 3/28/2022
1.4.0-preview.50 115 3/28/2022
1.4.0-preview.48 116 3/28/2022
1.4.0-preview.47 116 3/28/2022
1.4.0-preview.46 117 3/28/2022
1.4.0-preview.44 134 3/17/2022
1.4.0-preview.43 116 3/17/2022
1.4.0-preview.42 123 3/14/2022
1.4.0-preview.41 114 3/14/2022
1.4.0-preview.40 108 3/14/2022
1.4.0-preview.39 114 3/14/2022
1.4.0-preview.37 120 3/14/2022
1.4.0-preview.36 132 3/8/2022
1.4.0-preview.35 123 3/8/2022
1.4.0-preview.33 131 3/4/2022
1.4.0-preview.32 120 3/3/2022
1.4.0-preview.31 122 3/2/2022
1.4.0-preview.29 160 2/28/2022
1.4.0-preview.28 190 2/24/2022
1.4.0-preview.26 139 2/17/2022
1.4.0-preview.24 120 2/17/2022
1.4.0-preview.22 150 2/6/2022
1.4.0-preview.21 138 2/4/2022
1.4.0-preview.19 137 2/4/2022
1.4.0-preview.18 136 1/28/2022
1.4.0-preview.16 132 1/28/2022
1.4.0-preview.15 136 1/28/2022
1.4.0-preview.13 137 1/28/2022
1.4.0-preview.12 135 1/21/2022
1.4.0-preview.6 151 1/12/2022
1.4.0-preview.5 135 1/12/2022
1.4.0-preview.4 132 1/11/2022
1.4.0-preview.3 138 1/11/2022
1.3.7-preview.8 137 1/5/2022
1.3.7-preview.7 141 1/3/2022
1.3.7-preview.6 135 1/3/2022
1.3.7-preview.5 137 1/3/2022
1.3.7-preview.4 135 12/30/2021
1.3.7-preview.3 137 12/28/2021
1.3.6 534 12/3/2021
1.3.6-preview.23 138 12/3/2021
1.3.6-preview.21 142 12/3/2021
1.3.6-preview.20 146 12/2/2021
1.3.6-preview.19 155 12/2/2021
1.3.6-preview.18 143 12/2/2021
1.3.6-preview.17 143 12/2/2021
1.3.6-preview.16 147 12/2/2021
1.3.6-preview.14 149 12/2/2021
1.3.6-preview.12 142 12/2/2021
1.3.6-preview.10 147 12/1/2021
1.3.6-preview.7 149 12/1/2021
1.3.6-preview.1 218 11/11/2021
1.3.5-preview.8 156 10/22/2021
1.3.5-preview.5 173 10/18/2021
1.3.4 922 7/16/2021
1.3.4-preview.78 155 7/16/2021
1.3.4-preview.76 156 7/16/2021
1.3.4-preview.74 161 7/16/2021
1.3.4-preview.72 168 7/15/2021
1.3.4-preview.70 174 7/14/2021
1.3.4-preview.68 607 6/19/2021
1.3.4-preview.66 260 6/19/2021
1.3.4-preview.64 161 6/17/2021
1.3.4-preview.62 166 6/7/2021
1.3.4-preview.60 166 6/7/2021
1.3.4-preview.58 193 6/7/2021
1.3.4-preview.56 207 6/6/2021
1.3.4-preview.54 205 6/3/2021
1.3.4-preview.52 162 6/2/2021
1.3.4-preview.50 176 6/1/2021
1.3.4-preview.48 184 6/1/2021
1.3.4-preview.41 197 5/25/2021
1.3.4-preview.39 220 5/21/2021
1.3.4-preview.37 222 5/20/2021
1.3.4-preview.35 165 5/19/2021
1.3.4-preview.33 169 5/19/2021
1.3.4-preview.31 188 5/19/2021
1.3.4-preview.29 166 5/15/2021
1.3.4-preview.27 165 5/15/2021
1.3.4-preview.25 167 5/15/2021
1.3.4-preview.23 172 5/13/2021
1.3.4-preview.22 166 5/13/2021
1.3.4-preview.20 185 5/11/2021
1.3.4-preview.18 223 5/6/2021
1.3.4-preview.16 163 5/6/2021
1.3.4-preview.14 158 5/5/2021
1.3.4-preview.13 153 5/5/2021
1.3.4-preview.10 186 4/10/2021
1.3.4-preview.9 198 4/9/2021
1.3.4-preview.7 173 4/5/2021
1.3.3-preview.65 225 3/20/2021
1.3.3-preview.62 201 3/19/2021
1.3.3-preview.60 163 3/17/2021
1.3.3-preview.57 164 3/17/2021
1.3.3-preview.55 182 3/2/2021
1.3.3-preview.50 382 1/19/2021
1.3.3-preview.47 187 1/6/2021
1.3.3-preview.40 181 12/29/2020
1.3.3-preview.34 252 12/7/2020
1.3.3-preview.32 212 12/7/2020
1.3.3-preview.27 236 11/3/2020
1.3.3-preview.25 241 10/26/2020
1.3.3-preview.23 256 10/21/2020
1.3.3-preview.17 241 10/20/2020
1.3.3-preview.15 310 10/1/2020
1.3.3-preview.11 239 9/30/2020
1.3.3-preview.9 241 9/30/2020
1.3.3-preview.7 257 9/27/2020
1.3.3-preview.5 260 9/27/2020
1.3.3-preview.1 231 9/24/2020
1.3.2-preview.3 255 9/19/2020
1.3.2-preview.1 317 8/25/2020
1.3.1-preview.6 273 7/2/2020
1.3.1-preview.3 311 6/30/2020
1.3.0 532 6/16/2020
1.3.0-rc.3 287 6/16/2020
1.3.0-preview.11 296 6/16/2020
1.3.0-preview.9 225 6/16/2020
1.3.0-preview.7 233 6/16/2020
1.3.0-alpha.12 291 6/16/2020
1.3.0-alpha.10 224 6/16/2020
1.3.0-alpha.8 231 6/16/2020
1.2.2 436 6/12/2020
1.2.2-preview.41 233 6/12/2020
1.2.2-preview.39 250 6/12/2020
1.2.2-preview.34 249 6/3/2020
1.2.2-preview.33 260 6/3/2020
1.2.2-preview.31 355 5/31/2020
1.2.2-preview.30 241 5/31/2020
1.2.2-preview.29 272 5/31/2020
1.2.2-preview.28 265 5/29/2020
1.2.2-preview.27 268 5/8/2020
1.2.2-preview.26 264 5/8/2020
1.2.2-preview.25 246 4/27/2020
1.2.2-preview.24 237 4/24/2020
1.2.2-preview.23 233 4/21/2020
1.2.2-preview.22 277 4/16/2020
1.2.2-preview.19 273 4/16/2020
1.2.2-preview.18 247 4/14/2020
1.2.2-preview.17 248 4/14/2020
1.2.2-preview.16 253 4/14/2020
1.2.2-preview.15 282 3/25/2020
1.2.2-preview.14 287 3/15/2020
1.2.2-preview.13 249 3/10/2020
1.2.2-preview.12 242 3/10/2020
1.2.2-preview.10 241 3/10/2020
1.2.2-preview.8 247 3/10/2020
1.2.2-preview.7 247 3/10/2020
1.2.2-preview.6 270 3/9/2020
1.2.2-preview.5 272 3/9/2020
1.2.2-preview.4 251 3/6/2020
1.2.2-preview.3 299 1/13/2020
1.2.2-preview.2 308 11/14/2019
1.2.2-preview.1 264 11/12/2019
1.2.2-alpha.42 232 6/12/2020
1.2.2-alpha.40 255 6/12/2020
1.2.2-alpha.38 284 6/11/2020
1.2.2-alpha.35 242 6/3/2020
1.2.2-alpha.34 260 6/3/2020
1.2.2-alpha.32 350 5/31/2020
1.2.2-alpha.31 267 5/31/2020
1.2.2-alpha.30 271 5/30/2020
1.2.2-alpha.29 257 5/29/2020
1.2.2-alpha.28 264 5/8/2020
1.2.2-alpha.27 260 5/8/2020
1.2.2-alpha.26 241 4/27/2020
1.2.2-alpha.23 275 4/16/2020
1.2.2-alpha.21 266 4/16/2020
1.2.2-alpha.20 264 4/16/2020
1.2.2-alpha.19 240 4/14/2020
1.2.2-alpha.18 247 4/14/2020
1.2.2-alpha.17 240 4/14/2020
1.2.2-alpha.16 284 3/25/2020
1.2.2-alpha.15 289 3/15/2020
1.2.2-alpha.14 241 3/10/2020
1.2.2-alpha.13 235 3/10/2020
1.2.2-alpha.11 243 3/10/2020
1.2.2-alpha.10 245 3/10/2020
1.2.2-alpha.9 248 3/10/2020
1.2.2-alpha.8 274 3/9/2020
1.2.2-alpha.7 275 3/9/2020
1.2.2-alpha.6 283 3/9/2020
1.2.1-preview.3 261 11/8/2019
1.2.1-preview.1 267 11/5/2019
1.2.0-preview.3 260 10/18/2019
1.1.0 570 10/17/2019
1.1.0-preview.3 265 10/17/2019
1.0.8-preview.7 254 10/17/2019
1.0.8-preview.5 278 10/15/2019
1.0.8-preview.4 270 9/30/2019
1.0.8-preview.1 281 8/30/2019
1.0.7-preview.1 285 8/30/2019
1.0.6-preview.33 289 8/19/2019
1.0.6-preview.30 283 7/19/2019
1.0.6-preview.26 293 6/23/2019
1.0.6-preview.19 311 6/22/2019
1.0.6-preview.17 307 6/18/2019
1.0.5-preview-028 464 4/5/2019
1.0.5-preview-026 474 4/5/2019