WebClient - UploadValues:获取状态响应
本文关键字:状态 响应 获取 UploadValues WebClient | 更新日期: 2023-09-27 18:15:30
我正试图将值从一个控制器传递到另一个域中的另一个控制器。我正在将数据添加到NameValueCollection并将其传递给另一个控制器[httppost]方法,并在那里接收映射到与我传递的模型相同的数据。
目前我是通过同时打开两个VS实例在本地运行它。当两个VS都打开时,值被正确传递,信息被正确写入数据库,我收到一个响应,如"{byte[0]}"。现在,当我尝试停止目标控制器项目并尝试提交数据时,它不会工作,但我仍然得到与"{byte[0]}"相同的响应。有人可以帮助我如何在这种情况下返回响应命令。是否有一种方法可以理解UploadValues是否已完成?
.........
.........
NameValueCollection resumeDetails = new NameValueCollection();
resumeDetails.Add("FirstName", "KRIZTE");
byte[] res = this.Post(ConfigurationManager.AppSettings["RedirectionUrl"].ToString(), resumeDetails);
return View("Index");
}
public byte[] Post(string uri, NameValueCollection resumeDetails)
{
byte[] response = null;
WebClient client = new WebClient();
response = client.UploadValues(uri, resumeDetails);
return response;
}
由于这样的问题,您不应该使用WebClient
。
Microsoft实现了HttpClient
类作为一个较新的API,它有以下好处:
HttpClient是较新的api,它具有
有一个很好的异步编程模型
1-由Henrik F Nielson负责,他基本上是HTTP的发明者之一,他设计了API,因此您可以轻松遵循HTTP标准,例如生成符合标准的标头
2-在。net框架4.5中,因此在可预见的将来它有一定程度的支持保证
3-也有xcopyable/portable-framework版本的库,如果你想在其他平台上使用它- . net 4.0, Windows Phone等
我给你们看一个使用HttpClient
的例子:
var uri = "http://google.com";
var client = new HttpClient();
try
{
var values = new List<KeyValuePair<string, string>>();
// add values to data for post
values.Add(new KeyValuePair<string, string>("FirstName", "KRITZTE"));
FormUrlEncodedContent content = new FormUrlEncodedContent(values);
// Post data
var result = await client.PostAsync(uri, content);
// Access content as stream which you can read into some string
Console.WriteLine(result.Content);
// Access the result status code
Console.WriteLine(result.StatusCode);
}
catch(AggregateException ex)
{
// get all possible exceptions which are thrown
foreach (var item in ex.Flatten().InnerExceptions)
{
Console.WriteLine(item.Message);
}
}