Передайте большую строку в asp net и получите ответ, используя json - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь передать большую строку в моем контроллере, используя json.Также мне нужен контроллер, чтобы отправить мне ответ.

Вот мой контроллер в веб-интерфейсе:

public class CustomersController : ApiController
{
    // GET: api/Customers
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET: api/Customers/5
    public string Get(int id)
    {
        return "value";
    }

    // POST: api/Customers
    public void Post([FromBody]string value)
    {
    }

    // PUT: api/Customers/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE: api/Customers/5
    public void Delete(int id)
    {
    }
}

Прежде всего, где я должен прочитать мою строку и куда я должен отправить ответ?

А вот мой клиент, который пытается отправить строку

using (var client = new HttpClient())
        {
            var response = await client.PostAsync("http://192.168.1.15:8282/",new StringContent("Mystring", Encoding.UTF8, "application/json"));

           if (response.IsSuccessStatusCode)
        {
          string content = await response.Content.ReadAsStringAsync();
        }

Мне нужен мой веб-API, чтобы прочитать мою строку, а затем отправить мне ответ

1 Ответ

0 голосов
/ 04 октября 2018

Вместо того, чтобы иметь методы как void, вам нужно return строковое значение из методов контроллера.Кроме того, не забудьте украсить методы соответствующим HTTP-глаголом attribubte (HttpGet, HttpPost, HttpPut и т. Д.), За который отвечает метод.

Вот пример, в котором метод возвращает результат Ok, при этом генерируетсяhttp код состояния 200 со строкой в ​​теле ответа

[HttpPost]
public IHttpActionResult Post([FromBody]string value)
{
    return Ok(value);
}

Затем для вызова клиента.Прежде всего, вам нужно правильно указать маршрут к контроллеру

192.168.1.15:8282/api/Customers

Затем отправка одной строки в качестве содержимого при использовании типа содержимого application/json не подходит, так как json всегда начинает анализ собъект {} или массив [].Поэтому самый простой способ отправки одной строки - просто изменить тип содержимого на application/x-www-form-urlencoded и добавить знак = перед строкой

using (var client = new HttpClient())
{
    var response = await client.PostAsync("http://192.168.1.15:8282/api/Customers",new StringContent("=Mystring", Encoding.UTF8, "application/x-www-form-urlencoded"));

    if (response.IsSuccessStatusCode)
    {
        string content = await response.Content.ReadAsStringAsync();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...