asp.net 核心网络请求

web request in asp.net core

我想在 asp.net 核心项目中进行网络请求。我尝试了以下但它似乎没有在请求中发送数据:

using System.Net;

...

//encoder
UTF8Encoding enc = new UTF8Encoding();

//data
string data = "[\"some.data\"]";

//Create request
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Credentials = new NetworkCredential(user, secret);

//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();
dataStream.Write(enc.GetBytes(data), 0, data.Length); 


//Get the response
WebResponse wr = await request.GetResponseAsync();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();

我没有收到错误,请求已发送,但它似乎没有随请求发送数据。 我也无法随请求提供数据的长度。这是一个核心问题吗? (ps:凭据已正确发送)

谁能帮帮我?

您可能遇到了同步上下文问题。 尝试等待 GetRequestStreamAsync()GetResponseAsync() 等异步方法,而不是获取结果 属性.

//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();

//Get the response
WebResponse wr = await request.GetResponseAsync();

终于解决了。他们是我解决 api 请求的外部 api 代码中的错误。我问题中的代码有效(如果有人想使用它)。

PS: 我用 ycrumeyrolle

的评论编辑了代码