Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

web request in asp.net core

I want to do a web request in a asp.net core project. I tried the following but it doesn't seem to send the data in the request:

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

I don't get an error, the request was send but it doesn't seem to send the data with the request. I also can't give the length of the data with the request. Is this a core issue? (ps: The credentials are send correctly)

Can anyone help me?

like image 765
Wouter Avatar asked Dec 16 '16 10:12

Wouter


2 Answers

Finally solved it. Their was a bug in my external api code where I resolved the api request. The code in my question works (If someone wants to use it).

PS: I edit the code with the remark of ycrumeyrolle

like image 97
Wouter Avatar answered Oct 05 '22 13:10

Wouter


You may be facing a synchronization context problem. Try to await the asynchronous methods like GetRequestStreamAsync() and GetResponseAsync() instead of getting the Result property.

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

//Get the response
WebResponse wr = await request.GetResponseAsync();
like image 43
ycrumeyrolle Avatar answered Oct 05 '22 12:10

ycrumeyrolle