关于微信公众平台开发环境部署

网上见到有人吐槽微信公众平台开发测试不方便,原因是公众平台测试号需要开发者设置一个地址用于调用,这个地址还必须是80端口,要知道,在天朝个人宽带是不允许开通80端口的,也就是说你必须将地址指向一台服务器,但又有谁试过在服务器上开发的呀,所以一般我想都是本地做好一个功能需要测试就发布到服务器,再拿起手机发条消息测试通不通,这样的效率可想而知呢,这也是好多开发者的槽点。

其实利用花生壳我们也可以直接在本地测试,或许你会问,花生壳不是不能开80端口吗?没错,但我们不需要80端口也可以办到,原理如下:


手机微信APP -> 微信平台-> 中转站(80端口)->花生壳(XXXX端口)-> YOUR PC


建一个中转网站(.net/php/java啥的随便你)部署在有80端口的服务器上,将微信传过来的数据以同样的方式(GET/POST)通过花生壳地址转到你的电脑。

当然,通过对路由的端口映射,不用花生壳也能使你的电脑也能暴露在外网,只是用花生壳会方便一点,不用每次换IP都去改配置,话说你这样折腾还不也是为了开发方便?



一、附上关键中转代码:

                var settings = new System.Configuration.AppSettingsReader();
                var devUrl = settings.GetValue("devUrl", typeof(string));
                if (devUrl == null) throw new Exception("无此配置devUrl");

                string url = string.Format("{0}{1}{2}", devUrl,
                    devUrl.ToString().Contains("?") ? "&" : "?",
                    Request.ServerVariables["QUERY_STRING"]);

                if (Request.HttpMethod.ToUpper() == "POST")
                {
                    Stream stream = Request.InputStream;
                    var data = new byte[stream.Length];
                    stream.Read(data, 0, data.Length);
                    var str = PostData(url, data);  // post data;
                    stream.Close();

                    return Content(str);
                }
                else
                {
                    string result = string.Empty;
                    using (WebClient client = new WebClient())
                    {
                        Stream stream = client.OpenRead(url);
                        StreamReader sr = new StreamReader(stream);
                        result = sr.ReadToEnd();
                        sr.Close();
                    }

                    return Content(result);

                }


二、PostData方法代码:

        private string PostData(string postUrl, byte[] data)
        {
            HttpWebRequest request;
            HttpWebResponse response;
            ASCIIEncoding encoding = new ASCIIEncoding();
            request = WebRequest.Create(postUrl) as HttpWebRequest;
            request.ProtocolVersion = HttpVersion.Version10;
            request.AllowAutoRedirect = true;
            request.ContentType = "text/xml";
            request.ContentLength = data.Length;
            request.Accept = "*/*";
            request.UserAgent = "Mozilla/4.0";
            request.KeepAlive = true;
            request.Method = "POST";

            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            string html = string.Empty;

            try
            {
                //获取服务器返回的资源
                using (response = request.GetResponse() as HttpWebResponse)  //自动关闭和释放
                {
                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))  //自动关闭和释放
                    {
                        html = reader.ReadToEnd();
                    }
                }
            }
            catch (WebException wex)
            {
                WebResponse wr = wex.Response;
                Stream st = wr.GetResponseStream();
                using (StreamReader sr = new StreamReader(st, System.Text.Encoding.Default))  //自动关闭和释放
                {
                    html = sr.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                html = "发生异常\n\r" + ex.Message;
            }

            return html;
        }








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值