Публикация данных из строкового значения в методе контроллера ASPI Net Core Web API - PullRequest
0 голосов
/ 02 июля 2018

У меня есть приложение 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 ..
как я могу получить отправленные данные?

Заранее спасибо.

1 Ответ

0 голосов
/ 02 июля 2018

вы можете использовать HTTPClient для этого. это облегчит вам процесс.

public static string PostWebApi(string postData)
{           
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:64817/api/test");
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("value", postData)
            });
            var result = await client.PostAsync("/api/Membership/exists", content);
            string resultContent = await result.Content.ReadAsStringAsync();
            Console.WriteLine(resultContent);
        }
}

Ссылка: - Как сделать веб-запрос HTTP POST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...