C# demo
demo调用
private SmsClient smsClient = new SmsClient("127.0.0.1", "8080", "user03", "986457");
//单内容批量发送
private SendSmsResp SendSMS()
{
SendSmsResp sendSmsResp = smsClient.Send("【信息中心】 您的验证码为123456565", "15866515845");
return sendSmsResp;
}
SmsClient 针对接口的封装
public class SmsClient
{
private String URL = "http://ip:port/websms/smsJsonService";
private String BATCH_URL = "http://ip:port/batchwebsms/smsJsonService";
private String userName, passWord;
public SmsClient(String ip, String port, String userName, String passWord)
{
SetIPAndPort(ip, port, userName, passWord);
}
public void SetIPAndPort(String ip, String port, String userName, String passWord)
{
this.userName = userName;
this.passWord = MD5Util.UserMd5(passWord);
URL = URL.Replace("ip", ip);
URL = URL.Replace("port", port);
BATCH_URL = BATCH_URL.Replace("ip", ip);
BATCH_URL = BATCH_URL.Replace("port", port);
}
//单内容多号码批量发送
public SendSmsResp Send(String content, String phone)
{
IDictionary<String, String> map = new Dictionary<String, String>
{
{ Constants.KEY_ACTION, Constants.ACTION_SEND_SMS },
{ Constants.KEY_USER_ID, userName },
{ Constants.KEY_MD5_PASSWORD, passWord },
{ Constants.KEY_CONTENT, content },
{ Constants.KEY_MOBILE, phone }
};
String mes = HttpUtil.HttpRequest(URL, map);
SendSmsResp ssr = JsonHelper.DeserializeJsonToObject<SendSmsResp>(mes);
return ssr;
}
//多内容打包发送,不同的内容对应不同的手机号,并且一个内容只能发一个手机号
public BatchSmsResp Send(List<SmsContent> smsContents)
{
IDictionary<String, String> map = new Dictionary<String, String>
{
{ Constants.KEY_USER_ID, userName },
{ Constants.KEY_MD5_PASSWORD, passWord },
{ Constants.KEY_CONTENT_ARR, SerializerHelper.JsonSerializer(smsContents) }
};
String mes = HttpUtil.HttpRequest(BATCH_URL, map);
BatchSmsResp bsr = JsonHelper.DeserializeJsonToObject<BatchSmsResp>(mes);
return bsr;
}
//获取短信状态反馈 一次最多反馈500条,反馈状态只推一次,拿过的状态不在平台保存
public SendReportResp GetMt()
{
IDictionary<String, String> map = new Dictionary<String, String>
{
{ Constants.KEY_ACTION, Constants.ACTION_GET_SEND_REPORT },
{ Constants.KEY_USER_ID, userName },
{ Constants.KEY_MD5_PASSWORD, passWord }
};
String mes = HttpUtil.HttpRequest(URL, map);
SendReportResp srr = JsonHelper.DeserializeJsonToObject<SendReportResp>(mes);
return srr;
}
//获取短信上行
public DeliverResp GetMo()
{
IDictionary<String, String> map = new Dictionary<String, String>
{
{ Constants.KEY_ACTION, Constants.ACTION_GET_DELIVER },
{ Constants.KEY_USER_ID, userName },
{ Constants.KEY_MD5_PASSWORD, passWord }
};
String mes = HttpUtil.HttpRequest(URL, map);
DeliverResp dr = JsonHelper.DeserializeJsonToObject<DeliverResp>(mes);
return dr;
}
}
HttpUtil请求方式封装
// 创建POST方式的HTTP请求
public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters)
{
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
request = WebRequest.Create(url) as HttpWebRequest;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
//请求方式
request.Method = "POST";
//提交数据格式
request.ContentType = "application/x-www-form-urlencoded";
//发送POST数据
if (!(parameters == null || parameters.Count == 0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
i++;
}
}
byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
string[] values = request.Headers.GetValues("Content-Type");
return request.GetResponse() as HttpWebResponse;
}
//获取请求的数据
public static string GetResponseString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}