json - 如何在 Webhook 中接收 json post 数据

标签 json asp.net-mvc asp.net-mvc-4 json.net

我们正在使用第 3 方 api kraken.io优化我们的图像。

优化图像的结果发布在 Webhook 中.

在他们的 api 文档中它指出:优化结束后 Kraken 将 POSTcallback_url 的消息在您的请求中指定 JSON格式application/json .

我正在使用 ngrok允许远程 webhooks使用 this 将数据发送到我的开发机器文章。

结果发布到回调 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"
}

类到 map
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 中它看起来像 keyvalue对而不是 Json 格式。

收到的结果不是 Json 格式的:
file_name=header.jpeg&original_size=118066&kraked_size=102459&saved_bytes=15607

我猜收到的数据content-type:application/x-www-form-urlencoded .

为什么我会收到 keyvalue成对而不是 Json 格式?如何在 asp.net mvc 中反序列化 Json 数据?

最佳答案

https://kraken.io联合创始人这里。

我们的文档中有一个明显的遗漏,我将在今天修复。要取回 JSON,您需要设置 "json": true请求中的标志。省略该标志或设置 "json": false将返回 URLEncoded。示例 cURL 请求:

curl http://api.kraken.io/v1/upload -X POST --form data='{"auth":{"api_key":"YOUR_KEY", "api_secret":"YOUR_SECRET"}, "wait": true, "lossy": true, "callback_url": "http://requestb.in/wbhi63wb", "json": true}' --form upload=@test.jpg

带来不便敬请谅解 :-(

关于json - 如何在 Webhook 中接收 json post 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42246497/

相关文章:

asp.net-mvc - 如何处理mvc中的渲染异常?

asp.net-mvc-4 - HttpResponseException

c# - 从MVC WebApi调用时Git/SSH挂起

c# - 使用 WCF 将 JSON 对象的一部分序列化和反序列化为字符串

json - 通过 JSON 网络请求发送 Onesignal/gamethrive 推送

json - Aeson 合并对象编码

javascript - $.getJSON 和 $.ajax 无法返回 JSON 对象

c# - 显示空类型的数据

asp.net-mvc - 在 MVC4 中使用 JsonConvert.SerializeObject 清理输入?

asp.net-mvc-4 - 是否需要委派才能在同一服务器上的应用程序之间传递凭据?