これは何百万回も尋ねられたと思いますが、どのように機能するのかわかりません。私のアプリはフレームワーク 4.0 に対して c# です。簡単な POST を実行しようとしましたが、C# からではなく、POST がトリガーされません。次のような単純な PowerShell に相当するものによってトリガーされます。
$uri="http://localhost:50554/api/pinfo/?sendmessage=yes&message=yep&killprocess=yes&timeout=20"
Invoke-RestMethod -uri $uri -Method Post -Body @($apso | ConvertTo-Json) -ContentType "application/json; charset=utf-8"
$apso はカスタム PSObject の配列です。したがって、POST メソッドは機能し、使用可能です。したがって、C#では次のようにします。
// this needs to be POSTed
PInfo pi = new PInfo();
pi.computername="test";
pi.username="test";
pi.PID="1234";
List<PInfo> lpi=new List<PInfo>();
lpi.Add(pi);
//Invoke the POST
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:50554/");
var a = client.PostAsync("api/pinfo/?sendmessage=yes&message=tralala&killprocess=no&timeout=20", new StringContent(lpi.ToString(), System.Text.Encoding.UTF8, "application/json"))
.ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());
しかし、それは同じ POST をトリガーしませんか? 私がここで見逃しているアイデアはありますか?
BR、ロナルド
Edit:: await でコンパイル エラーが発生します。「await」演算子は非同期メソッド内でのみ使用できます。このメソッドを 'async' 修飾子でマークし、その戻り値の型を 'Task' に変更することを検討してください。
誰かがそれが何を意味するのか説明できれば、素晴らしいです! 本当にわかりません。
しかし、これも解決するようです:
PInfo p = new PInfo();
p.username = "test";
p.computername = "test";
p.PID = "test";
List<PInfo> testlist = new List<PInfo>();
testlist.Add(p);
client.BaseAddress = new Uri ("http://localhost:50554");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage result = client.PostAsJsonAsync(url, testlist).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;