我想这已经被问了一百万次了,但我无法弄清楚这些东西是如何工作的。我的应用程序在 c# 中针对框架 4.0。我尝试做一个简单的 POST,但我的 POST 甚至没有被触发,而不是来自 C#。它确实由一个简单的 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”运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。
如果有人能解释这意味着什么,那就太好了!真的不知道。
但这似乎也解决了它:
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;