послать запрос POST (API) из С#

349
23 августа 2017, 15:00

Пытаюсь послать запрос POST из Xamarin, вот текст:

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://192.168.6.13:59626/api/values");
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Accept = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
    WebAPI.TMessage message = new WebAPI.TMessage { sMessage = "Приветики!!!" };
    string json = JsonConvert.SerializeObject(message);
    //string json = "{\"x\":\"true\"}";
    streamWriter.Write(json);
    streamWriter.Flush();
    }
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
     {
     var result = streamReader.ReadToEnd();
     //return result;
     }

Метод POST в API реагирует на этот запрос, но параметр пустой. Код API:

public void Post([FromBody]string/*byte[]*/ value)
    {
    TMessage a = JsonConvert.DeserializeObject<TMessage>(value);
    db.InsReturn(a.sMessage);
    }

Подскажите, что не так делаю?

Answer 1

Отправляемые вами данные отличаются от того, что ожидает сервер. Ведь вы ему отправляете данные в JSON формате, а он ожидает от вас обычный string.

  • Поменяйте у сервера ожидаемые данные:

    public void Post([FromBody] TMessage value)

  • Уберите у сервера лишнюю строку десериализации:

    TMessage a = JsonConvert.DeserializeObject(value);

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

READ ALSO
DevExpress TreeList.ExportToXls ширина столбца в выгружаемом excel-файле

DevExpress TreeList.ExportToXls ширина столбца в выгружаемом excel-файле

Есть ли возможность регулировать ширину столбцов при выгрузке? А то она отличается от той, что в гриде в приложении, некоторые столбцы слишком...

272
Оператор this и автосвойства в c#

Оператор this и автосвойства в c#

Перечитываю уже не первый раз теорию, но не могу понять в чем особенность использования оператора this или авто свойств {get;set;} Опишите особенности...

481
Вернуть дочерний элемент WinForms C#

Вернуть дочерний элемент WinForms C#

Нужно вернуть дочерний элементЕсть какой то Panel например, в нем есть несколько PictureBox, label и бог знает что еще

480