gpt4 book ai didi

c# - 将 NameValueCollection 发送到 http 请求 C#

转载 作者:太空狗 更新时间:2023-10-29 22:20:19 25 4
gpt4 key购买 nike

我有这种情况。我们正在使用某种登录方法,但该方法处于更高的抽象级别,因此它只有用户名和密码等参数,并且使用此参数收集一些名称值,然后传递给某些请求生成器。注入(inject)此请求构建器以便我可以更改它的实现。现在我们使用 POST 请求,但将来我们可能会使用 XML 或 JSON,因此只需切换注入(inject)接口(interface)的实现即可。

问题是我无法对任何使我的 System.Net.HttpWebRequest 脱离此名称值集合的库进行罚款。我需要这样的原型(prototype)方法:

WebRequest / HttpWebRequest  CreateRequest(Uri / string, nameValueCollection);

或者如果没有类似的东西,那么完成所有工作(发送请求、接收响应和解析它们)的库也会很好。但它需要是异步的。

提前致谢。

最佳答案

我不是 100% 确定您想要什么,但是要创建一个 Web 请求来发布一些来自 NameValueCollection 的数据,您可以使用如下内容:

HttpWebRequest GetRequest(String url, NameValueCollection nameValueCollection)
{
// Here we convert the nameValueCollection to POST data.
// This will only work if nameValueCollection contains some items.
var parameters = new StringBuilder();

foreach (string key in nameValueCollection.Keys)
{
parameters.AppendFormat("{0}={1}&",
HttpUtility.UrlEncode(key),
HttpUtility.UrlEncode(nameValueCollection[key]));
}

parameters.Length -= 1;

// Here we create the request and write the POST data to it.
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";

using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(parameters.ToString());
}

return request;
}

但是,您发布的数据将取决于您接受的格式。此示例使用查询字符串格式,但如果您切换到 JSON 或其他格式,您只需更改处理 NameValueCollection 的方式。

关于c# - 将 NameValueCollection 发送到 http 请求 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com