简体   繁体   English

如何通过Webhook将json格式的字符串作为有效载荷传递给iron.io工作者?

[英]How do I pass a json formatted string as a payload to an iron.io worker via a webhook?

How do I submit a json formatted string to the following script with a webhook? 如何使用Webhook向以下脚本提交json格式的字符串?

Below is my script on iron.io that I want to read the payload. 下面是我要在iron.io上读取有效负载的脚本。

import sys, json

sys.argv[8]

payload_file = None
payload = None


    for i in range(len(sys.argv)):

        if sys.argv[i] == "-payload" and (i + 1) < len(sys.argv):
            payload_file = sys.argv[i + 1]
            with open(payload_file,'r') as f:
                payload = json.loads(f.read())
                print "printing resulting payload: " + str(payload)
            break

When I queue a json formatted string within the platform, I get the desired outcome which you can see below: 当我在平台内排队以json格式的字符串时,我得到了所需的结果,您可以在下面看到:

json formatted string that I inputed 我输入的json格式化字符串

{u'env': u'production'}

Log shown in Iron.io Iron.io中显示的日志

printing resulting payload: {u'env': u'production'}

I'd like to accomplish the same result via a webhook call with the following javascript. 我想通过使用以下javascript的webhook调用来实现相同的结果。

post('https://worker-aws-us-east-1.iron.io/2/projects/PROJECTKEY/tasks/webhook?code_name=CODENAME&oauth=OAUTH', {
    payload: {
        "tasks": [{
            "code_name": "firebase_email_webhook",
            "payload": "{u'env': u'production'}"
        }]
    }
})


function post(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for (var key in params) {
        if (params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
        }
    }

    document.body.appendChild(form);
    form.submit();
}

The webhook call works fine, but the issue is that I get the following error: webhook调用工作正常,但是问题是我得到以下错误:

Traceback (most recent call last):
  File "firebase_email_webhook.py", line 32, in <module>
    payload = json.loads(f.read())
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Webhook endpoint receives unmodified POST content as payload. Webhook端点接收未修改的POST内容作为有效负载。 just send json and you're done. 只需发送json就可以了。

Code borrowed from https://stackoverflow.com/a/6587249/1758892 https://stackoverflow.com/a/6587249/1758892借来的代码

var arr = { City: 'Moscow', Age: 25 };
$.ajax({
    url: 'Ajax.ashx',
    type: 'POST',
    data: JSON.stringify(arr),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    async: false,
    success: function(msg) {
        alert(msg);
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将JavaScript数组转换为格式化的JSON字符串 - How do you convert a javascript array to a formatted JSON String 如何使用 Flask 传递我的 JSON 字符串? - How do I pass my JSON string using Flask? 我如何选择 JSON (Webhook) 数据的特定值? - How do i pick a specific value on a JSON (Webhook) Data? 如何在我的 json 负载中插入一个变量? - How do I insert a variable in my json payload? 如何为我的有效负载编写 Json 路径表达式 - How do I write Json path expression for my payload 如何在nodejs中返回格式化的JSON对象 - How do i return the formatted JSON object in nodejs 如何通过 JavaScript - postMessage() 中的 web worker 传递可转移对象数组,即缓冲区以及不可转移的 object,即 json obj? - How to pass array of transferable objects i.e. buffer along with non transferable object i.e. json obj via web worker in JavaScript - postMessage()? 如何在 JavaScript 中输出 ISO 8601 格式的字符串? - How do I output an ISO 8601 formatted string in JavaScript? 我应该如何在http post请求的请求有效负载中传递json数据 - How should I pass json data in the request payload of http post request 如何将格式化的字符串传递给javascript var? 参见C#示例我的意思 - How can I pass a formatted string to a javascript var? see c# example what I mean
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM