当前位置: 首页 > 知识库问答 >
问题:

为System.网。HttpClient获取

巫欣荣
2023-03-14

如果我想提交超文本传输协议,请使用System.网。HttpClient似乎没有api添加参数,这是正确的吗?

是否有任何简单的api可用于构建查询字符串,而不涉及构建名称-值集合和url编码,然后最终连接它们?我希望使用类似RestSharp的api(即AddParameter(…)

共有3个答案

於宾白
2023-03-14

在ASP. NET Core项目中,您可以使用Microsoft中提供的QueryHelper类。AspNetCore.ASP. NET Core或.NET Standard 2.0 Nuget包为其他消费者:

// using Microsoft.AspNetCore.WebUtilities;
var query = new Dictionary<string, string>
{
    ["foo"] = "bar",
    ["foo2"] = "bar2",
    // ...
};

var response = await client.GetAsync(QueryHelpers.AddQueryString("/api/", query));

穆轶
2023-03-14

对于那些不希望包含System.Web在尚未使用它的项目中,可以使用System中的FormUrlEncodedContent。网。http并执行如下操作:

string query;
using(var content = new FormUrlEncodedContent(new KeyValuePair<string, string>[]{
    new KeyValuePair<string, string>("ham", "Glazed?"),
    new KeyValuePair<string, string>("x-men", "Wolverine + Logan"),
    new KeyValuePair<string, string>("Time", DateTime.UtcNow.ToString()),
})) {
    query = content.ReadAsStringAsync().Result;
}
string query;
using(var content = new FormUrlEncodedContent(new Dictionary<string, string>()
{
    { "ham", "Glaced?"},
    { "x-men", "Wolverine + Logan"},
    { "Time", DateTime.UtcNow.ToString() },
})) {
    query = content.ReadAsStringAsync().Result;
}
姬振
2023-03-14

如果我想提交超文本传输协议,请使用System.网。HttpClient似乎没有api添加参数,这是正确的吗?

是否有任何简单的api可用于构建查询字符串,而不涉及构建名称-值集合和url编码,然后最终连接它们?

当然:

var query = HttpUtility.ParseQueryString(string.Empty);
query["foo"] = "bar<>&-baz";
query["bar"] = "bazinga";
string queryString = query.ToString();

会给你预期的结果:

foo=bar%3c%3e%26-baz&bar=bazinga

您可能还会发现UriBuilder类很有用:

var builder = new UriBuilder("http://example.com");
builder.Port = -1;
var query = HttpUtility.ParseQueryString(builder.Query);
query["foo"] = "bar<>&-baz";
query["bar"] = "bazinga";
builder.Query = query.ToString();
string url = builder.ToString();

会给你预期的结果:

http://example.com/?foo=bar%3c%3e%26-baz&bar=bazinga

您可以更安全地向您的HttpClient馈送。GetAsync方法。

 类似资料:
  • 在本章中,我们将讨论Bootstrap网格系统。 什么是网格? 由wikepedia提出 - 在图形设计中,网格是一种结构(通常是二维的),由一系列用于构造内容的交叉直(垂直,水平)线组成。 它广泛用于设计印刷设计中的布局和内容结构。 在网页设计中,使用HTML和CSS快速有效地创建一致的布局是一种非常有效的方法。 简而言之,网页设计中的网格组织和构建内容,使网站易于扫描,减少用户的认知负担。 什

  • 问题内容: 我正在使用HttpClient 4.1.2 那么,如何获取Cookie值? 问题答案: 请注意:第一个链接指向曾经在HttpClient V3中工作的内容。在下面找到与V4相关的信息。 这应该回答你的问题 http://www.java2s.com/Code/Java/Apache- Common/GetCookievalueandsetcookievalue.htm 以下与V4有关:

  • 主要内容:Maven依赖关系,HTTP获取服务器证书示例以下教程演示了如何使用Apache HttpClient 4.5从资源服务器获取证书。 证书用于通过使用SSL / TLS的HTTPS保护客户端和服务器之间的连接。 当您需要有关证书的详细信息时,例如:证书何时到期?谁颁发证书?等等。或者在某些情况下需要读取服务器证书。 在下面的例子中,我们将详细解释如何实现。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache 版本。 将以

  • 我正在尝试使用NuGet Package Manager控制台将更改部署到数据库。当我发出命令时,该命令失败,并显示一条错误消息: 我的项目目标。NET 4.5.2,据我所知,它提供了在版本。因此,关联库不会放在二进制输出目录中。当我下载版本(Nuget包版本4.3.2)并将其复制到二进制输出目录,以及我的DLL时,我会收到另一条错误消息: 在这两种情况下,例外情况都是并将其抛出到Microsof

  • 使用ApacheHttpClient 4.1。3并尝试从获取状态代码: 如何从中提取状态代码(202,404等)?或者,如果在4.1.3中还有另一种方法可以做到这一点,那它是什么? 另外,我假设完美/良好的HTTP响应是,但也希望得到确认。提前谢谢!

  • 下表列出了各种系统调用及其说明。 类别 系统调用 描述 General 打开() 此系统调用将打开现有文件或创建并打开新文件。 General creat() 创建并打开一个新文件。 General 读() 将文件的内容读入所需的缓冲区。 General 写() 将缓冲区的内容写入文件。 General 关 () 关闭文件描述符。 General stat() 提供有关该文件的信息。 Pipes