Я пытаюсь вызвать API из приложения winform, но получаю ошибку неверного запроса.Я думаю, что я не смог отформатировать правильную строку для моего пост-запроса.
Редактировать Добавление кода класса driverDayLogModel
driveDayLogModel.cs
public class driverDayLogModel
{
public int driverId { get; set; }
public DateTime dayStartTime { get; set; }
}
Код вызова API
driverDayLogModel driverDayLog = new driverDayLogModel
{
driverId = Convert.ToInt32(txtId.Text),
dayStartTime = DateTime.Now,
};
var js = new JavaScriptSerializer();
string json = JsonConvert.SerializeObject(driverDayLog);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://127.0.0.1:54314/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/driverdaylogs", json).Result;
if (response.IsSuccessStatusCode)
{
// Some Stuff
}
else
{
MessageBox.Show("Error Code" +
response.StatusCode + " : Message - " + response.ReasonPhrase);
}
}
Я получаюJson As "{\"driverId\":1,\"dayStartTime\":\"2019-03-03T21:44:15.1912313+05:00\"}"
Что кажется недопустимым json для API, когда я пытаюсь использовать тот же json для почтальона, это также приводит к ошибке 400 Bad Request, но следует отметить, что когда я вызываю API с Json {"driverId":1,"dayStartTime":"2019-03-03T21:44:15.1912313+05:00"}
Мой запрос идетуспешно API, и я получил ожидаемый ответ в POSTMAN.Я не могу преобразовать JSON в приемлемый формат для веб-папок в winforms
Ниже приведен код для Webapi.
public IHttpActionResult PostDayLogs([FromBody]driverDayLogModel log)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
var driverDayLog = new driverDailyLogs();
driverDayLog.dayEndTime = DateTime.Now;
driverDayLog.dayStartTime = log.dayStartTime;
driverDayLog.driverId = log.driverId;
var max = db.driverDailyLogs.OrderByDescending(r => r.id).FirstOrDefault();
driverDayLog.id = max == null ? 1 : max.id + 1;
driverDayLog.logDate = DateTime.Now.Date;
db.driverDailyLogs.Add(driverDayLog);
db.SaveChanges();
return Ok(driverDayLog);
}
В WebApiConfig у меня есть следующий код
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Formatters.JsonFormatter
.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Пожалуйста, направьте меня в этом отношении.