string JPushURI = "https://api.jpush.cn/v3/push";
string app_key = "808a3e149a54f82dbdb06f47";
string masterSecret = "ced2ca08b8b789585dfa9222";
string msg = "zhanghuiying";
第一种写法
public static string JPush(string msg)
{string result = "";
HttpWebRequest rq = (HttpWebRequest)HttpWebRequest.Create(JPushURI);
rq.ContentType = "application/json";
rq.Method = "POST";
#region 封装header与消息体
//Header
byte[] buffer = Encoding.Default.GetBytes(app_key + ":" + masterSecret );
string base64 = Convert.ToBase64String(buffer);
rq.Headers.Set(HttpRequestHeader.Authorization, base64);
rq.Headers.Set("Authorization", base64);
//消息体
Dictionary<string, object> data = new Dictionary<string, object>();
ArrayList arr = new ArrayList();
arr.Add("android");
data.Add("platform", arr);//推送分平台["android", "ios"]
data.Add("audience", "all");//推送分用户"tag或者alias":["tag","alias"]
Dictionary<string, object> notification = new Dictionary<string, object>();
Dictionary<string, object> androidalert = new Dictionary<string, object>();
androidalert.Add("alert", msg);//分平台传
notification.Add("android", androidalert);
data.Add("notification", notification);
Dictionary<string, object> message = new Dictionary<string, object>();
message.Add("msg_content", "固定消息(非广播)内容体");
data.Add("message", message);
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(data);
#endregion
try
{
using (Stream rqs = rq.GetRequestStream())
{
byte[] bytejson = Encoding.Default.GetBytes(json);
rqs.Write(bytejson, 0, bytejson.Length);
using (HttpWebResponse rp = (HttpWebResponse)rq.GetResponse())
{
using (Stream rps = rp.GetResponseStream())
{
StreamReader sr = new StreamReader(rps);
result = sr.ReadToEnd();
}
}
}
}
catch (Exception e) { Console.WriteLine("异常:" + e.Message); }
return result;
}
第二种写法
protected void Button1_Click(object sender, EventArgs e)
{
string result = "";
try
{
//消息体
Dictionary<string, object> data = new Dictionary<string, object>();
ArrayList arr = new ArrayList();
arr.Add("android");
arr.Add("ios");
data.Add("platform", arr);
ArrayList arr1 = new ArrayList();
arr1.Add("JZ1098");
Dictionary<string, object> alias = new Dictionary<string, object>();
alias.Add("alias", arr1);
data.Add("audience", alias);
Dictionary<string, object> androidNotificationParam = new Dictionary<string, object>();
//androidNotificationParam.Add("url", "0");
//androidNotificationParam.Add("id", "0");
//androidNotificationParam.Add("messageTitle", "0");
//androidNotificationParam.Add("ModiflyTime", "0");
androidNotificationParam.Add("", "{}");
Dictionary<string, object> androidNotificationExtras = new Dictionary<string, object>();
androidNotificationExtras.Add("option", "0");
androidNotificationExtras.Add("param", androidNotificationParam);
Dictionary<string, object> androidNotificationVal = new Dictionary<string, object>();
androidNotificationVal.Add("val", androidNotificationExtras);
Dictionary<string, object> androidNotification = new Dictionary<string, object>();
androidNotification.Add("extras", androidNotificationVal);
Dictionary<string, object> notification = new Dictionary<string, object>();
notification.Add("alert", msg);
notification.Add("android", androidNotification);
data.Add("notification", notification);
Dictionary<string, object> options = new Dictionary<string, object>();
options.Add("apns_production", false);
data.Add("options", options);
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(data);
try
{
result = RequestWebClient(JPushURI, json, null, app_key, masterSecret);
if (!string.IsNullOrWhiteSpace(result))
{
System.Web.UI.ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg", "alert(\"推送消息成功!\");", true);//return result;
}
}
catch (Exception ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg", "alert(\"推送消息失败!\");", true);
}
}
catch (Exception ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg", "alert(\"推送消息失败!\");", true);
}
System.Web.UI.ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg", "alert(\"推送消息成功!\");", true);//return result;
}
public static string RequestWebClient(string uri, string paramStr, Encoding encoding, string username, string password)
{
if (encoding == null)
encoding = Encoding.UTF8;
string result = string.Empty;
WebClient wc = new WebClient();
// 采取POST方式必须加的Header
wc.Headers.Add("Content-Type", "application/json");
byte[] postData = encoding.GetBytes(paramStr);
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
wc.Credentials = GetCredentialCache(uri, username, password);
wc.Headers.Add("Authorization", GetAuthorization(username, password));
}
byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
return encoding.GetString(responseData);// 解码
}
public static CredentialCache GetCredentialCache(string uri, string username, string password)
{
string authorization = string.Format("{0}:{1}", username, password);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
return credCache;
}
public static string GetAuthorization(string username, string password)
{
string authorization = string.Format("{0}:{1}", username, password);
return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
}