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
的评论编辑了代码
我想在 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
的评论编辑了代码