ASP.NET Core中的Web请求

11

我想在一个asp.net core项目中发起Web请求。我尝试了以下方法,但似乎没有发送请求中的数据:

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();

我没有收到错误信息,请求已发送,但似乎没有将数据与请求一起发送。我也无法提供请求中数据的长度。这是否是一个核心问题?(注:凭据已正确发送) 有人能帮帮我吗?

3
我要投票关闭这个问题,因为它无法回答(请参见下面提问者的回答)。 - Kapol
2个回答

1

问题终于解决了。我的外部API代码中存在一个漏洞,我已经解决了API请求的问题。我在问题中提供的代码能够正常工作(如果有人想使用它)。

PS:我根据ycrumeyrolle的备注编辑了代码。


1
您可能面临同步上下文问题。尝试使用异步方法,如GetRequestStreamAsync()GetResponseAsync(),而不是获取Result属性。
//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();

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

修改了代码。这个更改没有解决问题,但是更加合乎逻辑(问题在我调用的API中,请参见下面的答案)。感谢您的帮助! - Wouter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接