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 - UploadValues:获取状态响应

由于这样的问题,您不应该使用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);
    }
}