nanoFramework.System.Net.Http 1.5.145

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

// Install nanoFramework.System.Net.Http as a Cake Tool
#tool nuget:?package=nanoFramework.System.Net.Http&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以及异步/await模型。通过删除Async后缀以及不返回Task和缺少带有CancelationToken参数的 Overloaded方法来实现这一点。

还需要注意的是,为了能够验证服务器证书,需要将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();

上述调用将返回类似以下的内容,可以在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也可以轻松处理二进制内容。以下是如何从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);

释放响应

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

反馈和文档

有关文档、提供反馈、报告问题以及了解如何贡献的信息,请参阅主页仓库

加入我们的Discord社区这里

致谢

此项目的贡献者列表可以在贡献者中找到。

许可协议

nanoFramework Class Libraries采用MIT许可协议

行为准则

本项目采用了由贡献者公约定义的守则,以明确我们社区的期望行为。更多信息请参阅.NET Foundation 守则

.NET Foundation

本项目由.NET Foundation 支持。

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

NuGet 包 (14)

显示依赖于 nanoFramework.System.Net.Http 的前 5 个 NuGet 包

下载
nanoFramework.Azure.Devices.Client

该包包括 .NET nanoFramework.Azure.Devices.Client 库,用于 .NET nanoFramework C# 项目。这是一个使用 MQTT 代理的 Azure IoT Hub SDK。

nanoFramework.System.Net.WebSockets

该包包括 nanoFramework C# 项目中的 System.Net.WebSockets 库。还有两个其他包,一个只包含客户端 API,另一个只包含服务器 API。当需要使用更小的库时,可以使用这些包。

nanoFramework.System.Net.WebSockets.Server

该包包括 nanoFramework C# 项目的 System.Net.WebSockets 库(仅服务器 API)。还有两个其他包,一个只包含客户端 API,另一个包含完整的 API。

MakoIoT.Device.Services.ConfigurationManager

MAKO-IoT 配置模式管理器

MakoIoT.Device.Services.Server

简单的 WebServer,适用于 .NET nanoFramework C# 项目。基于 Laurent Ellerbach 及贡献者的 nanoFramework.WebServer

GitHub 仓库 (3)

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

仓库 星星
dotnet/samples
.NET 文档中引用的示例代码
nanoframework/Samples
🍬 nanoFramework 团队用于测试、概念验证和其他探索性工作所使用的代码示例
nanoframework/nanoFramework.IoT.Device
📦 本存储库包括针对各种传感器、芯片、显示器、帽子和外设的 .NET nanoFramework 实现
版本 下载 最后更新
1.5.145 735 7/30/2024
1.5.138 3,165 5/13/2024
1.5.136 493 5/10/2024
1.5.134 1,574 4/8/2024
1.5.132 383 4/8/2024
1.5.130 660 4/3/2024
1.5.128 186 4/3/2024
1.5.125 2,717 1/29/2024
1.5.118 1,457 1/24/2024
1.5.113 6,713 11/10/2023
1.5.110 113 11/9/2023
1.5.108 883 11/9/2023
1.5.106 1,368 11/3/2023
1.5.104 1,867 10/10/2023
1.5.102 2,197 10/4/2023
1.5.99 3,800 8/8/2023
1.5.97 788 7/27/2023
1.5.95 192 7/27/2023
1.5.84 5,446 2/17/2023
1.5.82 1,877 1/24/2023
1.5.78 2,607 12/28/2022
1.5.75 490 12/28/2022
1.5.73 478 12/28/2022
1.5.70 1,663 12/27/2022
1.5.68 425 12/22/2022
1.5.61 2,601 11/23/2022
1.5.54 3,405 10/26/2022
1.5.52 2,274 10/26/2022
1.5.50 1,869 10/26/2022
1.5.48 2,082 10/25/2022
1.5.45 896 10/25/2022
1.5.43 2,308 10/24/2022
1.5.41 919 10/24/2022
1.5.39 409 10/24/2022
1.5.37 2,167 10/23/2022
1.5.35 410 10/23/2022
1.5.30 3,267 10/10/2022
1.5.27 3,566 10/8/2022
1.5.24 3,918 9/22/2022
1.5.22 4,089 9/22/2022
1.5.20 3,786 9/15/2022
1.5.18 990 9/15/2022
1.5.13 3,128 8/5/2022
1.5.10 3,746 8/4/2022
1.5.8 727 8/4/2022
1.5.6 928 8/4/2022
1.5.4 2,249 8/3/2022
1.5.2 1,005 8/3/2022
1.4.0.25 705 8/3/2022
1.4.0.23 3,474 6/13/2022
1.4.0.21 2,541 6/8/2022
1.4.0.19 2,184 6/8/2022
1.4.0.14 2,363 5/26/2022
1.4.0.12 4,369 5/18/2022
1.4.0.10 4,144 5/3/2022
1.4.0 4,263 3/28/2022
1.4.0-preview.52 138 3/28/2022
1.4.0-preview.51 136 3/28/2022
1.4.0-preview.50 138 3/28/2022
1.4.0-preview.48 138 3/28/2022
1.4.0-preview.47 143 3/28/2022
1.4.0-preview.46 142 3/28/2022
1.4.0-preview.44 190 3/17/2022
1.4.0-preview.43 134 3/17/2022
1.4.0-preview.42 175 3/14/2022
1.4.0-preview.41 138 3/14/2022
1.4.0-preview.40 127 3/14/2022
1.4.0-preview.39 142 3/14/2022
1.4.0-preview.37 131 3/14/2022
1.4.0-preview.36 230 3/8/2022
1.4.0-preview.35 154 3/8/2022
1.4.0-preview.33 152 3/4/2022
1.4.0-preview.32 130 3/3/2022
1.4.0-preview.31 138 3/2/2022
1.4.0-preview.29 188 2/28/2022
1.4.0-preview.28 226 2/24/2022
1.4.0-preview.26 182 2/17/2022
1.4.0-preview.24 153 2/17/2022
1.4.0-preview.22 230 2/6/2022
1.4.0-preview.21 170 2/4/2022
1.4.0-preview.19 146 2/4/2022
1.4.0-preview.18 209 1/28/2022
1.4.0-preview.16 143 1/28/2022
1.4.0-preview.15 145 1/28/2022
1.4.0-preview.13 144 1/28/2022
1.4.0-preview.12 169 1/21/2022
1.4.0-preview.6 260 1/12/2022
1.4.0-preview.5 141 1/12/2022
1.4.0-preview.4 155 1/11/2022
1.4.0-preview.3 146 1/11/2022
1.3.7-preview.8 177 1/5/2022
1.3.7-preview.7 176 1/3/2022
1.3.7-preview.6 152 1/3/2022
1.3.7-preview.5 146 1/3/2022
1.3.7-preview.4 166 12/30/2021
1.3.7-preview.3 161 12/28/2021
1.3.6 740 12/3/2021
1.3.6-preview.23 167 12/3/2021
1.3.6-preview.21 148 12/3/2021
1.3.6-preview.20 167 12/2/2021
1.3.6-preview.19 147 12/2/2021
1.3.6-preview.18 160 12/2/2021
1.3.6-preview.17 164 12/2/2021
1.3.6-preview.16 152 12/2/2021
1.3.6-preview.14 155 12/2/2021
1.3.6-preview.12 148 12/2/2021
1.3.6-preview.10 168 12/1/2021
1.3.6-preview.7 151 12/1/2021
1.3.6-preview.1 327 11/11/2021
1.3.5-preview.8 283 10/22/2021
1.3.5-preview.5 201 10/18/2021
1.3.4 1,463 7/16/2021
1.3.4-preview.78 161 7/16/2021
1.3.4-preview.76 162 7/16/2021
1.3.4-preview.74 158 7/16/2021
1.3.4-preview.72 172 7/15/2021
1.3.4-preview.70 177 7/14/2021
1.3.4-preview.68 693 6/19/2021
1.3.4-preview.66 262 6/19/2021
1.3.4-preview.64 180 6/17/2021
1.3.4-preview.62 207 6/7/2021
1.3.4-preview.60 167 6/7/2021
1.3.4-preview.58 202 6/7/2021
1.3.4-preview.56 206 6/6/2021
1.3.4-preview.54 225 6/3/2021
1.3.4-preview.52 173 6/2/2021
1.3.4-preview.50 181 6/1/2021
1.3.4-preview.48 183 6/1/2021
1.3.4-preview.41 204 5/25/2021
1.3.4-preview.39 229 5/21/2021
1.3.4-preview.37 231 5/20/2021
1.3.4-preview.35 176 5/19/2021
1.3.4-preview.33 177 5/19/2021
1.3.4-preview.31 187 5/19/2021
1.3.4-preview.29 168 5/15/2021
1.3.4-preview.27 169 5/15/2021
1.3.4-preview.25 165 5/15/2021
1.3.4-preview.23 190 5/13/2021
1.3.4-preview.22 183 5/13/2021
1.3.4-preview.20 190 5/11/2021
1.3.4-preview.18 236 5/6/2021
1.3.4-preview.16 160 5/6/2021
1.3.4-preview.14 152 5/5/2021
1.3.4-preview.13 154 5/5/2021
1.3.4-preview.10 215 4/10/2021
1.3.4-preview.9 207 4/9/2021
1.3.4-preview.7 192 4/5/2021
1.3.3-preview.65 240 3/20/2021
1.3.3-preview.62 201 3/19/2021
1.3.3-preview.60 166 3/17/2021
1.3.3-preview.57 172 3/17/2021
1.3.3-preview.55 205 3/2/2021
1.3.3-preview.50 404 1/19/2021
1.3.3-preview.47 206 1/6/2021
1.3.3-preview.40 188 12/29/2020
1.3.3-preview.34 258 12/7/2020
1.3.3-preview.32 218 12/7/2020
1.3.3-preview.27 266 11/3/2020
1.3.3-preview.25 238 10/26/2020
1.3.3-preview.23 264 10/21/2020
1.3.3-preview.17 252 10/20/2020
1.3.3-preview.15 315 10/1/2020
1.3.3-preview.11 235 9/30/2020
1.3.3-preview.9 238 9/30/2020
1.3.3-preview.7 264 9/27/2020
1.3.3-preview.5 274 9/27/2020
1.3.3-preview.1 236 9/24/2020
1.3.2-preview.3 262 9/19/2020
1.3.2-preview.1 333 8/25/2020
1.3.1-preview.6 279 7/2/2020
1.3.1-preview.3 314 6/30/2020
1.3.0 763 6/16/2020
1.3.0-rc.3 289 6/16/2020
1.3.0-preview.11 292 6/16/2020
1.3.0-preview.9 233 6/16/2020
1.3.0-preview.7 234 6/16/2020
1.3.0-alpha.12 292 6/16/2020
1.3.0-alpha.10 227 6/16/2020
1.3.0-alpha.8 242 6/16/2020
1.2.2 471 6/12/2020
1.2.2-preview.41 240 6/12/2020
1.2.2-preview.39 254 6/12/2020
1.2.2-preview.34 261 6/3/2020
1.2.2-preview.33 270 6/3/2020
1.2.2-preview.31 363 5/31/2020
1.2.2-preview.30 257 5/31/2020
1.2.2-preview.29 280 5/31/2020
1.2.2-preview.28 263 5/29/2020
1.2.2-preview.27 290 5/8/2020
1.2.2-preview.26 264 5/8/2020
1.2.2-preview.25 274 4/27/2020
1.2.2-preview.24 257 4/24/2020
1.2.2-preview.23 237 4/21/2020
1.2.2-preview.22 288 4/16/2020
1.2.2-preview.19 287 4/16/2020
1.2.2-preview.18 249 4/14/2020
1.2.2-preview.17 256 4/14/2020
1.2.2-preview.16 246 4/14/2020
1.2.2-preview.15 299 3/25/2020
1.2.2-preview.14 301 3/15/2020
1.2.2-preview.13 253 3/10/2020
1.2.2-preview.12 259 3/10/2020
1.2.2-preview.10 241 3/10/2020
1.2.2-preview.8 252 3/10/2020
1.2.2-preview.7 243 3/10/2020
1.2.2-preview.6 274 3/9/2020
1.2.2-preview.5 274 3/9/2020
1.2.2-preview.4 266 3/6/2020
1.2.2-preview.3 332 1/13/2020
1.2.2-preview.2 332 11/14/2019
1.2.2-preview.1 274 11/12/2019
1.2.2-alpha.42 238 6/12/2020
1.2.2-alpha.40 254 6/12/2020
1.2.2-alpha.38 282 6/11/2020
1.2.2-alpha.35 254 6/3/2020
1.2.2-alpha.34 264 6/3/2020
1.2.2-alpha.32 347 5/31/2020
1.2.2-alpha.31 278 5/31/2020
1.2.2-alpha.30 278 5/30/2020
1.2.2-alpha.29 256 5/29/2020
1.2.2-alpha.28 264 5/8/2020
1.2.2-alpha.27 258 5/8/2020
1.2.2-alpha.26 243 4/27/2020
1.2.2-alpha.23 281 4/16/2020
1.2.2-alpha.21 282 4/16/2020
1.2.2-alpha.20 274 4/16/2020
1.2.2-alpha.19 236 4/14/2020
1.2.2-alpha.18 245 4/14/2020
1.2.2-alpha.17 246 4/14/2020
1.2.2-alpha.16 294 3/25/2020
1.2.2-alpha.15 290 3/15/2020
1.2.2-alpha.14 246 3/10/2020
1.2.2-alpha.13 241 3/10/2020
1.2.2-alpha.11 246 3/10/2020
1.2.2-alpha.10 249 3/10/2020
1.2.2-alpha.9 256 3/10/2020
1.2.2-alpha.8 278 3/9/2020
1.2.2-alpha.7 278 3/9/2020
1.2.2-alpha.6 292 3/9/2020
1.2.1-preview.3 266 11/8/2019
1.2.1-preview.1 280 11/5/2019
1.2.0-preview.3 292 10/18/2019
1.1.0 625 10/17/2019
1.1.0-preview.3 270 10/17/2019
1.0.8-preview.7 264 10/17/2019
1.0.8-preview.5 281 10/15/2019
1.0.8-preview.4 280 9/30/2019
1.0.8-preview.1 295 8/30/2019
1.0.7-preview.1 285 8/30/2019
1.0.6-preview.33 287 8/19/2019
1.0.6-preview.30 304 7/19/2019
1.0.6-preview.26 409 6/23/2019
1.0.6-preview.19 318 6/20/2019
1.0.6-preview.17 313 6/14/2019
1.0.6-preview.14 338 6/12/2019
1.0.6-preview.10 313 6/12/2019
1.0.6-preview.6 328 6/5/2019
1.0.6-preview.4 334 6/5/2019
1.0.6-preview.2 317 5/31/2019
1.0.5-preview-038 555 4/24/2019
1.0.5-preview-036 562 4/23/2019
1.0.5-preview-031 476 4/7/2019
1.0.5-preview-028 498 4/5/2019
1.0.5-preview-026 472 4/5/2019
1.0.5-preview-024 468 4/3/2019
1.0.5-preview-022 523 3/27/2019
1.0.5-preview-020 464 3/26/2019
1.0.5-preview-017 477 3/26/2019
1.0.5-preview-009 484 3/25/2019
1.0.5-preview-007 468 3/15/2019
1.0.5-preview-004 514 3/11/2019
1.0.5-preview-002 476 3/11/2019
1.0.5-preview-001 509 3/11/2019
1.0.4 1,008 1/22/2019
1.0.4-preview-009 502 3/10/2019
1.0.4-preview-003 625 1/3/2019
1.0.3 759 12/17/2018
1.0.2 746 11/15/2018
1.0.2-preview-009 626 11/20/2018
1.0.2-preview-005 600 11/8/2018