У меня есть приложение Asp Net Core 2.1 с контроллером REST, например:
[Produces("application/json")]
[Route("api/Test")]
public class TestController : Controller
{
// GET: api/Test
[HttpGet]
public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; }
// GET: api/Test/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id) { return "value"; }
// POST: api/Test
[HttpPost]
public void Post([FromBody]string value)
{
//.. testing code..
}
// PUT: api/Test/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value) {}
// DELETE: api/ApiWithActions/5
[HttpDelete("{id}")]
public void Delete(int id) {}
}
Я пытаюсь использовать объект «System.Net.HttpWebRequest», чтобы сделать запрос POST для контроллера Rest.
В моем клиентском приложении у меня есть метод, который получает данные в виде строки.
Содержимое строки - это динамический массив значений, таких как «param1 = value1; param2 = value2» (количество элементов является переменным).
Можете ли вы помочь мне понять, как правильно отправить эти данные в контроллер?
это код, который я пытаюсь использовать в клиенте:
public static string PostWebApi(string postData)
{
var request = (HttpWebRequest)WebRequest.Create("http://localhost:64817/api/test");
// for example, assumes that postData value is "param1=value1;param2=value2"
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/json";
//request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream()) {
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
return responseString;
}
Я использую тип контента "application / json": если я пытаюсь использовать "application / x-www-form-urlencoded" Я получаю "(415) Unsupported Media Type" error.
так что ... когда я исполняю PostWebApi, я получаю значение параметра NULL в методе POST: api / Test ..
как я могу получить отправленные данные?
Заранее спасибо.