asp.net处理来自外部的get请求

时间:2014-10-20 10:15:12

标签: c# asp.net asp.net-web-api

我正在使用短信网关,我需要处理发送给'我的消息。

文档说明当用户向我发送短信时,我会得到如下参数:

http://server.domain.tld/receive.php?MOBILE=4560512131&TEXT=keyword+hello+world&SHORTCODE=1290&SMSC=tdc&MSGID= 

我的服务器上http://server.domain.tld/receive.php?应该在哪里

我没有使用php所以我需要能够使用asp.net(移动,文本,短代码,smsc,msgid)获取这些参数

我的网站目前已经实现了WebAPI,我使用的是ASP.NET MVC5框架,但我不知道该怎么做。如何获取传入参数?

2 个答案:

答案 0 :(得分:1)

您需要创建类似于此的操作:

public string Receive(string MOBILE, string TEXT, string SHORTCODE, string SMSC, string MSGID)
    {
        // just handle your variables here: save to database, log, email, etc...

        return "OK"; // just an example, it depends on what the gateway is expecting
    }

假设它位于Home控制器内,应该有一种方法可以为网关指定这个“回调URL”。此网址应为:

http://[your website]/home/receive

如果您的SMS网关文档不够清楚如何更改/配置此URL,请向他们发送电子邮件。

答案 1 :(得分:0)

我想您必须使用例如NameValueCollection解析url编码的字符串,然后将此数据传递给Controller以进行进一步处理。
接受控制器的GET或POST中的url编码字符串并不困难。 像这个jQuery + WebApi示例,其中Controller接受POST动作url编码的字符串。

 $("#searchbtn").click(function () {
                var ser = $('#hotels').find('input, select').serialize();
                $.post('/api/hotelsavailablerq', { '': ser });
            });

服务器端:

public void PostHotelsAvailableRQ([FromBody] string q)
        {
           NameValueCollection qscoll = System.Web.HttpUtility.ParseQueryString(q);
           //Process key-value pairs
        }