簡體   English   中英

WebClient - UploadValues:獲取狀態響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM