Пытаюсь послать запрос 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);
}
Подскажите, что не так делаю?
Отправляемые вами данные отличаются от того, что ожидает сервер. Ведь вы ему отправляете данные в JSON формате, а он ожидает от вас обычный string.
Поменяйте у сервера ожидаемые данные:
public void Post([FromBody] TMessage value)
Уберите у сервера лишнюю строку десериализации:
TMessage a = JsonConvert.DeserializeObject(value);
Вы можете пойти по другому пути и отправлять ожидаемое для сервера значение, но тогда надо в запросе поменять ContentType на необходимое.
Продвижение своими сайтами как стратегия роста и независимости