В такой форме ваш сервис ожидает получения json с полем json
на верхнем уровне, таким же, как ваше поле JsonArray.json
класса.Таким образом, в этом случае ваше тело запроса должно выглядеть примерно так:
{
"json": "Whatever text you need to pass here"
}
Если вы хотите передать ваше тело JSON, вам нужен класс, который имеет все те же поля, что и ваш JSON с ключами.
В противном случае вы можете прочитать ваш JSON как строку, преобразовать в JSON и обработать вручную, например:
[Route("e10PostTCData")]
[HttpPost]
public async Task<string> PostResults()
{
var bytes = new byte[(int)Request.ContentLength.Value];
await Request.Body.ReadAsync(bytes, 0, bytes.Length);
var content = Encoding.UTF8.GetString(bytes);
var json = JObject.Parse(content);
return json["TestCase"]["tc_name"].ToString();
}
Для тела json:
{
"TestCase":{
"tc_name":"TestCase1"
},
"3": {
"scn_desc":"Create Client34345",
"test_status":"PASS",
"error_link":""
} ,
"4":{
"scn_desc":"Create Client43634",
"test_status":"PASS",
"error_link":""
},
"5":{
"scn_desc":"Create Client346346",
"test_status":"PASS",
"error_link":""
}
}
Ответ
TestCase1
ОБНОВЛЕНИЕ: Если вы хотите получить JSON в качестве строкового аргумента для вашей конечной точки:
public string PostResults([FromBody]string jsonStr)
{
// Use JObject class methods Parse or ToObject (deserialize) your string into object
return jsonStr;
}
Тогда ваш запрос должен быть многострочной строкой, а НЕ JSON, чтоочень неудобно, если только вы не единственный пользователь для своей конечной точки.Например:
'{
"TestCase":{
"tc_name":"TestCase1"
},
"3": {
"scn_desc":"Create Client34345",
"test_status":"PASS",
"error_link":""
} ,
"4":{
"scn_desc":"Create Client43634",
"test_status":"PASS",
"error_link":""
},
"5":{
"scn_desc":"Create Client346346",
"test_status":"PASS",
"error_link":""
}
}'
ОБНОВЛЕНИЕ: Я не уверен во всех особенностях PowerShell, но мне помогло следующее:
> $obj='{
"TestCase":{
"tc_name":"TestCase1"
}
}'
> Invoke-WebRequest http://localhost:65452/api/e10/e10PostTCData -Body $(echo $obj | ConvertTo-Json) -Method POST -ConventType "application/json"