SMS应用程序未发送特殊字符asp.net mvc

时间:2018-09-04 00:23:51

标签: asp.net asp.net-mvc sms sms-gateway

我有一个ASP.NET MVC应用程序,该应用程序从Web发送SMS,问题是它没有发送某些特殊字符,例如〜!@#$&,当我发送类似&&&&的消息时,它没有发送SMS ,如果我发送类似dan&dan之类的东西,它将发送第一个dan并删除剩余的字符和单词。

哈雷是我的代码:

public ActionResult SendSms(SendBatch member)
{
    StreamReader objReader;
    WebClient client = new WebClient();

    string mess = member.Message;
    string cell = member.Cell;
    string pass = "mypassword";
    string user = "username";

    string baseurl = "http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" + "username=" + user + "&" + "password=" + pass + "&" + "message=" + mess + "&" + "msisdn=" + cell;

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(baseurl);

    try
    {
        Stream objStream;
        objStream = wrGETURL.GetResponse().GetResponseStream();
        objReader = new StreamReader(objStream);
        objReader.Close();
    }
    catch (Exception ex)
    {
        ex.ToString();
    }
}

希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

由于使用Get方法调用SMS Web服务,因此非法字符会自动从SMS中删除。发送之前,您需要使用HttpUtility.UrlEncode对字符进行编码。

答案 1 :(得分:0)

非常感谢,我设法使用HttpUtility.UrlEncode找到了一个解决方案:

public ActionResult SendSms(SendBatch member)
    {
        StreamReader objReader;
        WebClient client = new WebClient();

        string mess = member.Message;
        string cell = member.Cell;
        string pass = "mypassword";
        string user = "username";

        string message = HttpUtility.UrlEncode(mess, System.Text.Encoding.GetEncoding("ISO-8859-1"));
        string baseurl = "http://bulksms.2way.co.za/eapi/submission/send_sms/2/2.0?" + "username=" + user + "&" + "password=" + pass + "&" + "message=" + message + "&" + "msisdn=" + cell;

        WebRequest wrGETURL;
        wrGETURL = WebRequest.Create(baseurl);

        try
        {
            Stream objStream;
            objStream = wrGETURL.GetResponse().GetResponseStream();
            objReader = new StreamReader(objStream);
            objReader.Close();
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }