【问题标题】:how to read Twilio POST parameters in C# using TwiML?如何使用 TwiML 在 C# 中读取 Twilio POST 参数?
【发布时间】:2013-08-03 05:21:49
【问题描述】:

如何读取传入呼叫的​​ Twilio POST 参数?我正在尝试使用 TwilioController,但我无法使用 SmsRequest 获取 Body 和 SmsSid。当我使用 WebApi 时,有人可以帮我举一个 C# 中的例子吗? 我尝试使用 Fiddler 传递 POST 参数,但值为 Null。所以我不确定我的阅读是否正确。

我什至尝试过这样做:

    [HttpPost]
    public string Post([FromBody] string smsReq)
    {
        return smsReq;
       // return smsReq.Body + " " + smsReq.SmsSid;
    }

但是当我从 Fiddler 传递值时,我的 smsReq 为空。

这是我从 Fiddler 传递过来的: 用户代理:提琴手 内容类型:application/x-www-form-urlencoded 接受:应用程序/xml 主机:本地主机:56846 内容长度:13

 { '': "Test"}

仅使用 {="Test"} 尝试了上述操作,但没有任何价值。 smsReq 以 NULL 的形式出现。

【问题讨论】:

    标签: http-post twilio asp.net-web-api


    【解决方案1】:

    Twilio 布道者在这里。

    您应该可以在 Post 方法中使用 SmsRequest 对象作为参数:

    public void Post([FromBody]SmsRequest) {}
    

    我使用 Fiddler 进行了测试,将 Json 的这个 sn-p 传递为 the Body of the POST request:

    {
     "Body":"asdasdasdas",
     "From":"sadasdasds"
    }
    

    您还必须确保将请求的 Content-Type 标头设置为“application/json”,以便 WebAPI 知道您将其传递给 JSON,以便它可以反序列化它。

    希望对您有所帮助。

    【讨论】:

    • 但我认为 Web Api 不允许您在 Post 中指定多个字符串作为参数。见这里:encosia.com/using-jquery-to-post-frombody-parameters-to-web-api 如果我错了,请纠正我。我最初确实使用 SmsRequest 对象作为参数,因为这样我得到了所有参数。但我无法理解如何阅读它们或将它们传递给我在 Fiddler 中的帖子。为了阅读它们,我是否需要创建一个单独的类来获取设置以从 SmsRequest 中读取它们?你能帮忙吗,因为我被困在那里。谢谢。
    • 查看我上面的编辑。我尝试了一个简单的测试来看看它是如何工作的,但我得到了 NULL。
    • 我编辑了我的原始答案,因为你是对的,Post 似乎只接受一个参数。我认为您遇到的问题仍然与您如何测试端点有关。根据您的其他帖子 (stackoverflow.com/questions/18005546/…),您没有传递有效的正文供 Web API 解析。我使用上面的方法签名设置了一个测试,并使用 Fiddler 对其进行了测试,它按我的预期工作。
    • 如果不是太多,您能否发布代码,说明您是如何读取和返回 SmsRequest.Body 或 SmsRequest.SmsSid 的?我正在尝试阅读它,但我不确定这是否是问题所在。如果您看到我的另一篇文章,我正在尝试阅读 smsReq.Body 但它正在引发空点异常。在此感谢您的帮助。谢谢。
    • 我们是否需要手动编码来反序列化请求,或者 web api 是否知道它需要这样做? Web api 的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多