c# - 如何使用 C# 将遗留程序的 POST 方法的 HttpWebRequest 转换为 HttpClient?

标签 c# httpclient httpwebrequest

我有使用 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结合使用。我认为您的响应映​​射应该是相同的。但您需要验证这一点。

关于c# - 如何使用 C# 将遗留程序的 POST 方法的 HttpWebRequest 转换为 HttpClient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73170380/

相关文章:

c# - 使用字符串目录填充 TreeView

c# - 如何从 ASP.NET 获取网页的 HTML 内容

c# - 页面源码怎么能省略某些东西

c# - 获取转换的 child 会跳过所有其他 child

c# - 在 C# NET 中检测应用程序关闭?

c# - Restsharp 返回 403 而 Postman 返回 200

java - httpClient -> HTTP/1.1 500 内部服务器错误

c# - 寻找设计模式来自动执行重复任务,例如登录/注销

ssl - 通过 TLS 的 httpweb 请求在服务器中失败

c# - Entity Framework 对象在传递后不更新