1. 程式人生 > >生成臨時wx二維碼,然後下載到本地,進行呼叫

生成臨時wx二維碼,然後下載到本地,進行呼叫

請求api的方法

    #region URL請求資料
        /// <summary>
        /// HTTP POST方式請求資料
        /// </summary>
        /// <param name="url">URL.</param>
        /// <param name="param">POST的資料</param>
        /// <returns></returns>
        public static string HttpPost(string url, string
param) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "*/*"; request.Timeout = 15000; request.AllowAutoRedirect = false
; StreamWriter requestStream = null; WebResponse response = null; string responseStr = null; try { requestStream = new StreamWriter(request.GetRequestStream()); requestStream.Write(param); requestStream.Close(); response = request.GetResponse(); if
(response != null) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); responseStr = reader.ReadToEnd(); reader.Close(); } } catch (Exception) { throw; } finally { request = null; requestStream = null; response = null; } return responseStr; } /// <summary> /// HTTP GET方式請求資料. /// </summary> /// <param name="url">URL.</param> /// <returns></returns> public static string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "GET"; //request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "*/*"; request.Timeout = 15000; request.AllowAutoRedirect = false; WebResponse response = null; string responseStr = null; try { response = request.GetResponse(); if (response != null) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); responseStr = reader.ReadToEnd(); reader.Close(); } } catch (Exception) { throw; } finally { request = null; response = null; } return responseStr; } #endregion

生成臨時二維碼,然後下載到伺服器

 #region 下載臨時二維碼,進行呼叫
        /// <summary>
        /// {"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
        /// 臨時二維碼
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        Newtonsoft.Json.Linq.JObject getTicket(string accessToken, int memid)
        {

            string jsonString = "{\"expire_seconds\": \"604800\",\"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": \"" + memid + "\"}}}";
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}", accessToken);
            var jsonStr = HttpPost(url, jsonString);//直接post一個json字串
            return jsonStr.StrToJson();

        }
        /// 下載網路圖片
        ///
        /// 網路地址
        /// 本地儲存路徑
        public void DownloadImage(string url, string path)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.ServicePoint.Expect100Continue = false;
            req.Method = "GET";
            req.KeepAlive = true;
            req.ContentType = "image/*";
            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
            System.IO.Stream stream = null;
            try
            {
                // 以字元流的方式讀取HTTP響應
                stream = rsp.GetResponseStream();
                Image.FromStream(stream).Save(path);
            }
            finally
            {
                // 釋放資源
                if (stream != null) stream.Close();
                if (rsp != null) rsp.Close();
            }
        }
        /// <summary>
        /// 獲取二維碼儲存到本地
        /// </summary>
        /// <param name="path"></param>
        /// <param name="memid"></param>
        /// <returns></returns>
        string getEWM(string path, int memid)
        {
            wx w = new wx();
            string at = w.access_token("wx355e13e6ae968fad", "2da7987a98ce652e3099b40bddce3595");
            var ticket = getTicket(at, memid);
            var url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket.GetValue("ticket");
            DownloadImage(url, path);
            return path;
        }

        #endregion