Мы используем сторонний api kraken.io для оптимизации наших изображений.Как получить данные json post в Webhook
Результаты оптимизированного изображения опубликованы в Webhook
.
В своем апи документе говорится: После оптимизации над Кракеном будет POST
сообщения для callback_url
указанных в запросе в формате application/json
JSON
.
Я использую ngrok, чтобы позволить удаленному webhooks
отправить данные на мою машину разработки, используя this статью.
Результаты размещены на Callback URL:
HTTP/1.1 200 OK
{
"id": "18fede37617a787649c3f60b9f1f280d",
"success": true,
"file_name": "header.jpg",
"original_size": 324520,
"kraked_size": 165358,
"saved_bytes": 159162,
"kraked_url": "http://dl.kraken.io/18/fe/de/37617a787649c3f60b9f1f280d/header.jpg"
}
класс для отображения
public class KrakenOptimizedResults
{
public string id { get; set; }
public bool success { get; set; }
public string file_name { get; set; }
public int original_size { get; set; }
public int kraked_size { get; set; }
public int saved_bytes { get; set; }
public string kraked_url { get; set; }
}
Метод Действие
[HttpPost]
public ActionResult OptimizedWebHook()
{
Request.InputStream.Position = 0;
string jsonString = new System.IO.StreamReader(Request.InputStream).ReadToEnd();
KrakenOptimizedResults obj = new JavaScriptSerializer().Deserialize<KrakenOptimizedResults>
(jsonString);
return Json(obj);
}
Но когда я debug
получил jsonString
в Html Visualizer, он выглядит как key
и value
пары вместо формата Json.
Полученные результаты не Json форматированные:
file_name=header.jpeg&original_size=118066&kraked_size=102459&saved_bytes=15607
Я предполагаю, что полученные данные content-type:
является application/x-www-form-urlencoded
.
Почему я принимаю key
и value
пар вместо Json-формата? как я могу десериализовать данные Json в asp.net mvc?
Благодарим вас за то, что я не смог установить json: true request, используя ваш .Net/C# 'SDK, поэтому я расширил базовый класс и [здесь] (http://stackoverflow.com/a/42247770/2218697) - это мое решение. Также было бы полезно, если бы метод 'Optimize' принимал параметры' imageUri', 'callbackUrl' и' optimizeRequest'. Сейчас он принимает только 'imageUri',' callbackUrl'. – stom