簡體   English   中英

如何使用 c# 將帶有遺留程序的 POST 方法的 HttpWebRequest 轉換為 HttpClient?

[英]How to convert HttpWebRequest with POST method of a legacy program to HttpClient, using c#?

我有使用 HttpWebRequest 的舊代碼,它工作正常。 微軟建議我們使用 HttpClient。 如何在 c# 中修改它以使用 HttpClient?

string authText = "{   "AuthParams":{      "AuthToken":"TokenID",      "FirmID":"MSFT",      "SystemID":"Systems-Internal",      "Version":"1.0",      "UUID":"SystemsInternalAPIUser"   }}";
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://msft.com/api/busnWebService/xbox-games");
JObject data = JObject.Parse(authText);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    streamWriter.Write(data);
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

var streamReader = new StreamReader(httpResponse.GetResponseStream());
string responseText = streamReader?.ReadToEnd();

(JsonConvert.DeserializeObject<CompRoot>(responseText).Data)
.Select(t => new CompanyClass
{       
    Ticker = t.Ticker,      
}).ToList()

由於我無法使用您的有效負載和端點嘗試解決方案,因此類似以下的內容應該可以在不測試的情況下解決問題。

string authText = "{\"AuthParams\":{\"AuthToken\":\"TokenID\",\"FirmID\":\"MSFT\",\"SystemID\":\"Systems - Internal\",\"Version\":\"1.0\",\"UUID\":\"SystemsInternalAPIUser\"}}";
var content = new StringContent(authText, Encoding.UTF8, "application/json");
using HttpClient client = new HttpClient();
var httpResponse = await client.PostAsync("http://msft.com/api/busnWebService/xbox-games", content);

string responseText = await httpResponse.Content.ReadAsStringAsync();

使用HttpClinet ,您需要將async Taskawait一起使用。 我假設您從響應中的映射應該是相同的。 但是您需要驗證這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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