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:資格情報は正しく送信されます)
誰か助けてもらえますか?
最後にそれを解決しました。それらは私の外部APIコードのバグであり、APIリクエストを解決しました。私の質問のコードは機能します(誰かがそれを使用したい場合)。
PS:私はycrumeyrolleの発言でコードを編集します
同期コンテキストの問題が発生している可能性があります。 Resultプロパティを取得する代わりに、GetRequestStreamAsync()
やGetResponseAsync()
などの非同期メソッドを待つようにしてください。
//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();
//Get the response
WebResponse wr = await request.GetResponseAsync();