C#当前位置:首页 代码示例-C#
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;

namespace TestMt
{
    /// 
    /// mt3 接口测试类。 直接调用 TestMt3.Main1 方法
    /// 修改 src 用户名 和 pwd 密码, dest: 目的号码, sender:原号码
    /// 
    public class TestMt3
	{ 
      public static void Main1(string[] args)
        {
			
          String URL = "http://210.51.190.233:8085/mt/mt3.ashx"; //接口地址
          String fmt = "src={0}&pwd={1}&ServiceID=SEND&dest={2}&sender={3}&msg={4}&codec=8"; // HTTP 请求参数格式

          string src = "";  // 你的用户名, 必须有值
          string pwd = "";  // 你的密码, 必须有值
          string dest = "861370xxxxxxx";// 你的目的号码【收短信的电话号码】, 必须有值
          // 你的原号码,可空【大部分国家原号码带不过去,只有少数国家支持透传,所有一般为空】
          string sender = "8613701234567";   
          // 短信内容
          string msg = "大家啊 , 测试一下 啊 ...hello ..";//你的短信内容

          // codec=8, Unicode 编码,  3, ISO-8859-1, 0 ASCII
          // 短信内容 HEX 编码,8 为 UTF-16BE HEX 编码, dataCoding = 8 ,支持所有国家的语言,建议直接使用 8
          string hexmsg = encodeHexStr(8, msg); 

          // 格式化 HTTP 请求参数格式
          string poststring = string.Format(fmt, new string[] { src, pwd, dest, sender, hexmsg }); 
          byte[] postData = System.Text.Encoding.ASCII.GetBytes(poststring);

          // HTTP 封包请求,返回结果,如果是以 “-” 开头的为发送失败,请查看错误代码,否则为MSGID
          string rs = doPostRequest(URL, postData); // HTTP 封包请求

          Console.WriteLine("SEND RESULT:" + rs);
          Console.ReadLine();
        }


        //字符编码成HEX
        private static String encodeHexStr(int dataCoding, String realStr)
        {
            string strhex = "";
            try
            {
                Byte[] bytSource = null;
                if (dataCoding == 15)
                {
                    bytSource = Encoding.GetEncoding("GBK").GetBytes(realStr);
                }
                else if (dataCoding == 3)
                {
                    bytSource = Encoding.GetEncoding("ISO-8859-1").GetBytes(realStr);
                }
                else if (dataCoding == 8)
                {
                    bytSource = Encoding.BigEndianUnicode.GetBytes(realStr);
                }
                else
                {
                    bytSource = Encoding.ASCII.GetBytes(realStr);
                }
                for (int i = 0; i < bytSource.Length; i++)
                {
                    strhex = strhex + bytSource[i].ToString("X2");

                }
            }
            catch (System.Exception err)
            {
                return realStr;
            }
            return strhex;
        }

        //hex编码还原成字符
        private static String decodeHexStr(int dataCoding, String hexStr)
        {
            String strReturn = "";
            try
            {
                int len = hexStr.Length / 2;
                byte[] bytSrc = new byte[len];
                for (int i = 0; i < len; i++)
                {
                    string s = hexStr.Substring(i * 2, 2);
                    bytSrc[i] = Byte.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
                }

                if (dataCoding == 15)
                {
                    strReturn = Encoding.GetEncoding("GBK").GetString(bytSrc);
                }
                else if (dataCoding == 3)
                {
                    strReturn = Encoding.GetEncoding("ISO-8859-1").GetString(bytSrc);
                }
                else if (dataCoding == 8)
                {
                    strReturn = Encoding.BigEndianUnicode.GetString(bytSrc);
                }
                else
                {
                    strReturn = System.Text.ASCIIEncoding.ASCII.GetString(bytSrc);
                }
            }
            catch (System.Exception err)
            {
                return hexStr;
            }
            return strReturn;
        }



        //POST方式发送得结果
        public static String doPostRequest(string url, byte[] bData)
        {
            System.Net.HttpWebRequest hwRequest;
            System.Net.HttpWebResponse hwResponse;

            string strResult = string.Empty;
            try
            {
                hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                hwRequest.Timeout = 30000;
                hwRequest.Method = "POST";
                hwRequest.ContentType = "application/x-www-form-urlencoded";
                hwRequest.ContentLength = bData.Length;

                System.IO.Stream smWrite = hwRequest.GetRequestStream();
                smWrite.Write(bData, 0, bData.Length);
                smWrite.Close();
            }
            catch (System.Exception err)
            {
                WriteErrLog(err.ToString());
                return strResult;
            }

            //get response
            try
            {
                hwResponse = (HttpWebResponse)hwRequest.GetResponse();
                StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.ASCII);
                strResult = srReader.ReadToEnd();
                srReader.Close();
                hwResponse.Close();
            }
            catch (System.Exception err)
            {
                WriteErrLog(err.ToString());
            }

            return strResult;
        }

        //GET方式发送得结果
        public static String doGetRequest(string url)
        {
            HttpWebRequest hwRequest;
            HttpWebResponse hwResponse;

            string strResult = string.Empty;
            try
            {
                hwRequest = (System.Net.HttpWebRequest)WebRequest.Create(url);
                hwRequest.Timeout = 30000;
                hwRequest.Method = "GET";
                hwRequest.ContentType = "application/x-www-form-urlencoded";
            }
            catch (System.Exception err)
            {
                WriteErrLog(err.ToString());
                return strResult;
            }
            //get response
            try
            {
                hwResponse = (HttpWebResponse)hwRequest.GetResponse();
                StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.ASCII);
                strResult = srReader.ReadToEnd();
                srReader.Close();
                hwResponse.Close();
            }
            catch (System.Exception err)
            {
                WriteErrLog(err.ToString());
            }

            return strResult;
        }

        public static void WriteErrLog(string strErr)
        {
            Console.WriteLine(strErr);
            System.Diagnostics.Trace.WriteLine(strErr);
        }

        const string SEND_SUC = "0"; // 发送成功
        const string SEND_ERROR = "-01"; // 系统维护中,请联系客服
        const string NOT_ENOUGHCREDITS = "-02"; // 当前账号余额不足
        const string ACCOUNT_BLOCKED = "-03"; // 帐号停止
        const string NETWORK_NOTCOVERED = "-04"; // 目的号码运营商不在服务覆盖范围
        const string DEST_NUMBER_EXCEED_MAX = "-05"; // 目的手机号码数量超长(30/次,超30个请自行做循环)
        const string INVALID_USER_OR_PASS = "-06"; // 用户或密码错误
        const string MISSING_DESTINATION_ADDRESS = "-07"; // 目的号码不能为空
        const string MISSING_SMSTEXT = "-08"; // 短信内容不能为空
        const string MISSING_SENDERNAME = "-09"; //源号码不能为空
        const string DEST_INVALIDFORMAT = "-10"; // DEST参数格式错误
        const string MISSING_USERNAME = "-11"; // 用户名空
        const string MISSING_PASS = "-12"; // 密码空
        const string NETWORK_FAIL = "-13"; // 网络错误
        const string INTERAL_ERROR = "-14"; // 内部错误
        const string INVALID_DESTINATION_ADDRESS = "-15"; // 非法手机号码,手机号码格式不对
        // 短信内容超长!(UNICODE最大70个字符,Alphabet编码(英文即以此方式传输)最大160字符)
        const string INVALID_SMS_MAX_LENGTH = "-16"; 
        const string BLACKWORD_IN_SMS = "-17"; // 短信内容含有非法字符
        const string DEST_IN_BLACKLIST = "-18"; //目的手机号码限制
        const string INVALID_DCS = "-19"; // 短信内容编码不对(比如发中文、韩文、日文而用Alphabet编码方式)
        const string INTERAL_ERROR_SERVICE_NO_START = "-20"; // 预处理服务没有启动
    }
}