2016-12-16 125 views
4

我想在一个asp.net核心项目中做一个web请求。我尝试以下,但它似乎并没有在请求发送数据:在asp.net核心中的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(); 

我没有得到一个错误,请求被发送,但它似乎并没有与请求发送数据。 我也不能给与请求的数据的长度。这是一个核心问题吗? (ps:证书发送正确)

任何人都可以帮助我吗?

+3

我投票关闭问题的言论编辑代码,因为它不能回答(见下面的OP的答案) – Kapol

回答

0

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

PS:我ycrumeyrolle

0

您可能正面临同步上下文问题。 尝试等待GetRequestStreamAsync()GetResponseAsync()之类的异步方法,而不是获取Result属性。

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

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

改变了代码。这种改变并不能解决问题,但idd更符合逻辑(问题出在我的api上,我打电话见下面的答案)。 Thxs的帮助! – Wouter