using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;
using Xfrog.Net; namespace 聚合数据借口发短信
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
string appkey = "xxx"; //配置您申请的appkey //1.屏蔽词检查测
string url1 = "http://v.juhe.cn/sms/black"; var parameters1 = new Dictionary<string, string>(); parameters1.Add("word", ""); //需要检测的短信内容,需要UTF8 URLENCODE
parameters1.Add("key", appkey);//你申请的key string result1 = sendPost(url1, parameters1, "get"); JsonObject newObj1 = new JsonObject(result1);
String errorCode1 = newObj1["error_code"].Value; if (errorCode1 == "")
{
MessageBox.Show("成功");
MessageBox.Show(newObj1.ToString());
//输出成功代码
textBox2.Text += "成功newObj1";
textBox2.Text += newObj1.ToString();
textBox2.Text += "分割"; }
else
{
MessageBox.Show(newObj1["error_code"].Value + ":" + newObj1["reason"].Value);
} //2.发送短信
string url2 = "http://v.juhe.cn/sms/send"; var parameters2 = new Dictionary<string, string>(); parameters2.Add("mobile", this.textBox1.Text); //接收短信的手机号码
parameters2.Add("tpl_id", ""); //短信模板ID,请参考个人中心短信模板设置
parameters2.Add("tpl_value", "#code#=1234&#company#=聚合数据"); //变量名和变量值对。如果你的变量名或者变量值中带有#&amp;=中的任意一个特殊符号,请先分别进行urlencode编码后再传递,&lt;a href=&quot;http://www.juhe.cn/news/index/id/50&quot; target=&quot;_blank&quot;&gt;详细说明&gt;&lt;/a&gt;
parameters2.Add("key", appkey);//你申请的key
parameters2.Add("dtype", ""); //返回数据的格式,xml或json,默认json string result2 = sendPost(url2, parameters2, "get"); JsonObject newObj2 = new JsonObject(result2);
String errorCode2 = newObj2["error_code"].Value; if (errorCode2 == "")
{
MessageBox.Show("成功");
MessageBox.Show(newObj2.ToString());
textBox2.Text += "成功newObj2";
textBox2.Text += newObj2.ToString();
textBox2.Text += "分割"; }
else
{
MessageBox.Show(newObj2["error_code"].Value + ":" + newObj2["reason"].Value);
textBox2.Text += "失败";
textBox2.Text += newObj2["error_code"].Value + ":" + newObj2["reason"].Value;
textBox2.Text += "分割";
}
} /// <summary>
/// Http (GET/POST)
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="parameters">请求参数</param>
/// <param name="method">请求方法</param>
/// <returns>响应内容</returns>
static string sendPost(string url, IDictionary<string, string> parameters, string method)
{
if (method.ToLower() == "post")
{
HttpWebRequest req = null;
HttpWebResponse rsp = null;
System.IO.Stream reqStream = null;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.Method = method;
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.Timeout = ;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
reqStream = req.GetRequestStream();
reqStream.Write(postData, , postData.Length);
rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
if (reqStream != null) reqStream.Close();
if (rsp != null) rsp.Close();
}
}
else
{
//创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8")); //GET请求
request.Method = "GET";
request.ReadWriteTimeout = ;
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); //返回内容
string retString = myStreamReader.ReadToEnd();
return retString;
}
} /// <summary>
/// 组装普通文本请求参数。
/// </summary>
/// <param name="parameters">Key-Value形式请求参数字典</param>
/// <returns>URL编码后的请求数据</returns>
static string BuildQuery(IDictionary<string, string> parameters, string encode)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
if (encode == "gb2312")
{
postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));
}
else if (encode == "utf8")
{
postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
}
else
{
postData.Append(value);
}
hasParam = true;
}
}
return postData.ToString();
} /// <summary>
/// 把响应流转换为文本。
/// </summary>
/// <param name="rsp">响应流对象</param>
/// <param name="encoding">编码方式</param>
/// <returns>响应文本</returns>
static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
System.IO.Stream stream = null;
StreamReader reader = null;
try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
}
}

最新文章

  1. 【Swift】UILabel 设置内边距
  2. UCMA设置lync在线状态
  3. 30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap
  4. iOS 关于AFNetworking ssl 待完成
  5. 几年前做家教写的C教程(之二)
  6. windows 注册表编程
  7. 再次尝试mtk线刷时发现的一些资源
  8. KSM剖析——Linux 内核中的内存去耦合
  9. Winform——计算器
  10. Spring MVC 下index.jsp访问
  11. LFI漏洞利用总结(转载)
  12. ubuntu vim 7.4 编译安装
  13. 【转】数据库中的join
  14. 常用的Windows批处理
  15. 【No system images installed for this target】的解决方式
  16. this的用法this.name=name 这个什么意思
  17. 关于调用约定(cdecl、fastcall、、thiscall) 的一点知识(用汇编来解释)good
  18. C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)
  19. linux tar命令 压缩、打包、解压 详解
  20. 【Luogu3768】简单的数学题(莫比乌斯反演,杜教筛)

热门文章

  1. 使用applescript脚本方式以管理员权限运行
  2. GROOVY简单语法实习
  3. ZooKeeper配置文件常用配置项一览表(转)
  4. svn重新定位或checkout,提示输入用户名密码,输入后报错
  5. HDU 4540
  6. Latex 排版技巧 1——数学公式对齐
  7. Windows移动开发(五)——初始XAML
  8. 读书笔记-HBase in Action-第一部分 HBase fundamentals
  9. 通过命令行升级git for windows
  10. SuperSocketClientEngine