0

是否有人使用 Campaign Monitor 通过 Campaign Monitor webhook 接收订阅更新?我已将 webhook 配置为将 json 数据发布到我们网站上的页面,但是当我的代码接收到数据时,它只是一堆零。我的代码如下:

System.IO.Stream stream = Request.InputStream;
        byte[] byteData = new byte[Convert.ToInt32(stream.Length)];
        int read = stream.Read(byteData, 0, Convert.ToInt32(stream.Length));
        string streamData = string.Empty;
        string somedata = System.Text.Encoding.ASCII.GetString(byteData).ToString();
        for (int i = 0; i < Convert.ToInt32(stream.Length); i++)
        {
            streamData = streamData + byteData[i].ToString();
        }

我已经尝试将数据发布到我的页面并且它有效 - 即上面的代码(somedata)返回与我发布到页面相同的文本值。很郁闷....

有什么想法吗?我今晚掉了很多头发!!!

提前感谢艾尔

4

1 回答 1

2

您可以按如下方式阅读请求的正文(来自 webforms 应用程序):

var reader = new StreamReader(Request.InputStream);
var json = reader.ReadToEnd();

文档指定您期望订阅事件的数据采用以下形式:

{
    "Events": [
        {
            "CustomFields": [
                {
                    "Key": "website", 
                    "Value": "http:\/\/example.org"
                }
            ],
            "Date": "2010-12-14 11:32:00",
            "EmailAddress": "test@example.org",
            "Name": "Test Subscriber",
            "SignupIPAddress": "53.78.123.243",
            "Type": "Subscribe"
        }
    ],
    "ListID": "96c0bbdaa54760c8d9e62a2b7ffa2e13"
}

您可以通过使用上面的示例数据向您的 URL 提交 POST 请求来自己测试这一点。这是一个使用 curl 的示例:

curl http://localhost:49681/receiver.aspx -v -X POST -d \
'{
    "Events": [
        {
            "CustomFields": [
                {
                    "Key": "website", 
                    "Value": "http:\/\/example.org"
                }
            ],
            "Date": "2010-12-14 11:32:00",
            "EmailAddress": "test@example.org",
            "Name": "Test Subscriber",
            "SignupIPAddress": "53.78.123.243",
            "Type": "Subscribe"
        }
    ],
    "ListID": "96c0bbdaa54760c8d9e62a2b7ffa2e13"
}'
于 2012-10-19T06:59:15.223 回答