web-dev-qa-db-ja.com

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:資格情報は正しく送信されます)

誰か助けてもらえますか?

10
Wouter

最後にそれを解決しました。それらは私の外部APIコードのバグであり、APIリクエストを解決しました。私の質問のコードは機能します(誰かがそれを使用したい場合)。

PS:私はycrumeyrolleの発言でコードを編集します

1
Wouter

同期コンテキストの問題が発生している可能性があります。 Resultプロパティを取得する代わりに、GetRequestStreamAsync()GetResponseAsync()などの非同期メソッドを待つようにしてください。

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

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