Я предполагаю, что это было задано в миллион раз, но я не могу понять, как работает материал. Мое приложение находится в C# против фреймворка 4.0. Я пытаюсь сделать простой POST, но мой POST даже не срабатывает, а не с C#. Это действительно становится вызвано простой PowerShell эквивалент, который выглядит следующим образом:HTTPClient POST method C#
$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"
Где $ апсо является массивом пользовательских PSObjects. Следовательно, метод 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, Ronald
Edit :: ждет дает мне ошибку компиляции: «ждать» оператор может быть использован только в качестве метода асинхронного. Подумайте о маркировке этого метода с помощью модификатора «async» и измените его тип возврата на «Задача».
Если кто-нибудь может объяснить, что это значит, отлично! На самом деле не знаю.
Но это также, кажется, решить:
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;
Вы должны изменить, что 'поджидают client.PostAsync' – dcastro
Ну, это также, кажется, решить: – Ronald
Что, кажется, решить эту проблему? Вы забыли добавить что-то в свой комментарий – dcastro