.net调用rest api push apiv3给android

说实话并不会写.net,公司后台用的.net所有配合他们弄了一个简单的试了一下。

常规

到jpush官网注册成为开发者,然后配置好自己的应用,获得appkey和Master Secret。

android端集成

android端集成jpush的sdk最快的就是看官方demo,里面的东西很详细传送门。

.net调用api

本文的重点
我用的是vs2017,创建项目为.mvc框架的。

直接在Controller里面发送请求给jpush

 public void getMsg()
    {
        try
        {
            //拼接数据
            string postData = "{\"platform\":\"all\",\"audience\":\"all\",\"notification\":{\"alert\" : \"Hi, JPush!\", \"android\" : { \"extras\" : { \"newsid\" : 321}}}}";
            byte[] data = Encoding.UTF8.GetBytes(postData);
            string resCode = GetPostRequest(data);//调用极光的接口获取返回值
        }
        catch (Exception ex)
        {
        }
    }

本文只是介绍这种最基本的方法,至于其中各种参数,还有数据的类型可以参照官方的介绍,这里

  /// 
    /// Post方式请求获取返回值
    /// 
    /// 
    /// 
    public string GetPostRequest(byte[] data)
    {
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://api.jpush.cn/v3/push");
        myRequest.Method = "POST";//极光http请求方式为post
        myRequest.ContentType = "application/json";//按照极光的要求
        myRequest.ContentLength = data.Length;
        string myHeader = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(app_key + ":" + masterSecret));
        myRequest.Headers.Add("Authorization", "Basic "+ myHeader);
        Stream newStream = myRequest.GetRequestStream();
        // Send the data.
        newStream.Write(data, 0, data.Length);
        newStream.Close();
        // Get response
        var response = (HttpWebResponse)myRequest.GetResponse();
        using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
        {
            string result = reader.ReadToEnd();
            reader.Close();
            response.Close();
            return result;
        }
    }

然后把项目跑起来,直接在浏览器里面掉对应接口的方法,比如http://localhost:55568/home/getMsg
然后手机端就会收到通知。

遇到的问题

首先保证android端能收到通知,可以先在jpush后台发送通知测试。
然后controller里面调用方法后返回401,检查自己的app_key 和masterSecret是否正确,可能会多一个空格哦。

你可能感兴趣的:(.net调用rest api push apiv3给android)