[英]WebClient - UploadValues : Get Status Response
我正在尝试将值从一个控制器传递到另一个域中的另一个控制器。 我正在将数据添加到 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- 如果您想在其他平台(.Net 4.0、Windows Phone 等)上使用它,还具有该库的 xcopyable/portable-framework 版本。
所以我将向您展示一个使用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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.