我有使用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()

推荐答案

由于我无法使用您的有效负载和端点try 解决方案,因此类似下面的内容应该可以在不进行测试的情况下解决问题.

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.我假设您从响应得到的映射应该是相同的.但你需要验证这一点.

Csharp相关问答推荐

Blazor:计算值或保留为默认值

System.Text.Json数据化的C#类映射

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

AsNoTrackingWithIdentitySolutions()似乎不起作用?

将现有字段映射到EFCore中的复杂类型

Appsettings.json未加载.Net 8 Blaazor Web程序集

C#-从基类更新子类

为什么无法将对象转换为泛型类型

如何使用自定义负载均衡器管理Ocelot负载均衡器中的多线程和批读取

如何管理Azure认证客户端响应和证书 fingerprint

EF核心新验证属性`DeniedValues`和`StringCompison`不起作用

如果是,我怎么才能让这个加75,如果不是,我怎么才能减go 100?

在使用UserManager时,如何包含与其他实体的关系?

发布.NET 8 Blazor WebAssembly独立应用程序以进行静态站点部署

此异步方法在重写方法中缺少等待运算符警告

在等待OnGetAsync时打开Razor Page显示微调器

如何在绑定到数据库的datagridview中向上或向下移动行

如何在Xamarin.Forms中检索PanGesture事件的位置?

try 访问字典中的模拟对象时引发KeyNotFoundException

为什么我的属性即使没有显式地设置任何[必需]属性,也会显示验证?