приходит пустое тело в fetch request
JavaScript:
var url = "some url";
var testDevice = {
deviceFactory: 'IcpCon',
deviceName: 'TestDeviceName',
deviceDescription: 'TestDeviceDescription'
};
alert(JSON.stringify(testDevice)); //На этом алерте получаю корректную JSON строку
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(testDevice)
})
.then(response => {
alert("Status: " + response.status); // здесь код 200
})
Приложение, принимающее запросы:
var context = await Listener.GetContextAsync();
context.Request.Headers.Add("Content-Type", "application/json");
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
var request = context.Request;
using(var response = context.Response)
using(var reader = new StreamReader(request.InputStream))
{
var url = request.Url?.ToString();
var body = new StringBuilder();
body.Append(reader.ReadToEnd());
if(request.ContentType == "application/json")
{
var json = JsonConvert.DeserializeObject<AddDevice>(body.ToString()); //здесь тело уже пустое
var newDevice = new List<DeviceItem>();
var factory = FactoriesRepository.Factories.Where(x => x.Name == json.DeviceFactory).FirstOrDefault();
var deviceMetaData = new DeviceMetadata(json.DeviceName, json.DeviceDescription);
_devices.Add(new DeviceItem(factory.CreateDevice(DeviceIdGenerator.GenerateDeviceId(), deviceMetaData, factory.CreateDefaultConfiguration()))); //FIX DefaultConfiguration
DevicesRepository.Devices = _devices.Select(x => x.Device).ToList().AsReadOnly();
}
response.StatusCode = (int)HttpStatusCode.OK;
response.Close();
}
Ни одно решение, которое смог найти, не подошло