protected override HttpWebRequest PrepareWebRequest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters["t"] = "user/index";
			parameters["pagesize"] = this.PageSize.ToString();
			parameters["pageidx"] = this.PageIndex.ToString();
			parameters["type"] = "0";

			if (this.GroupID >= 0)
				parameters["groupid"] = this.GroupID.ToString();

			parameters["token"] = this.LoginInfo.Token;
			parameters["lang"] = "zh-CN";

			string url = "https://mp.weixin.qq.com/cgi-bin/contactmanage?" + parameters.ToUrlParameters(true);

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;
			request.ContentType = "text/html; charset=UTF-8";
			request.Method = "GET";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			this.Message.NullCheck("Message");

			string url = "https://mp.weixin.qq.com/cgi-bin/operate_appmsg";

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;
			request.Referer = string.Format("https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&type=10&isMul=0&isNew=1&token={0}&lang=zh_CN",
				HttpUtility.UrlEncode(this.LoginInfo.Token));

			request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
			request.Headers["X-Requested-With"] = "XMLHttpRequest";
			request.Method = "POST";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";

			NameValueCollection postParams = new NameValueCollection();

			postParams["AppMsgId"] = this.Message.AppMessageID > 0 ? this.Message.AppMessageID.ToString() : string.Empty;
			postParams["type"] = ((int)this.Message.MessageType).ToString();
			postParams["count"] = this.Message.Count.ToString();
			postParams["title0"] = this.Message.Title;
			postParams["content0"] = this.Message.Content;
			postParams["digest0"] = this.Message.Digest;
			postParams["author0"] = this.Message.Author;
			postParams["fileid0"] = this.Message.FileID > 0 ? this.Message.FileID.ToString() : string.Empty;
			postParams["sourceurl0"] = this.Message.SourceUrl;
			postParams["show_cover_pic0"] = this.Message.ShowCover ? "1" : "0";
			postParams["vid"] = string.Empty;
			postParams["ajax"] = "1";
			postParams["lang"] = "zh_CN";
			postParams["random"] = "0.963834238394236";
			postParams["f"] = "json";
			postParams["t"] = "ajax-response";
			postParams["sub"] = this.Message.AppMessageID == 0 ? "create" : "update";
			postParams["token"] = this.LoginInfo.Token;

			string postData = postParams.ToUrlParameters(true);

			byte[] data = Encoding.UTF8.GetBytes(postData);

			request.ContentLength = data.Length;

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

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			string url = "https://mp.weixin.qq.com/cgi-bin/masssend";

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;
			request.Referer = string.Format("https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token={0}&lang=zh_CN",
				HttpUtility.UrlEncode(this.LoginInfo.Token));

			request.ContentType = "application/x-www-form-urlencoded";
			request.Method = "POST";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";

			NameValueCollection postParams = new NameValueCollection();

			postParams["type"] = ((int)this.MessageType).ToString();
			postParams["sex"] = "0";
			postParams["groupid"] = this.GroupID.ToString();
			postParams["synctxweibo"] = "0";
			postParams["synctxnews"] = "0";
			postParams["country"] = string.Empty;
			postParams["province"] = string.Empty;
			postParams["city"] = string.Empty;
			postParams["imgcode"] = string.Empty;
			postParams["token"] = this.LoginInfo.Token;
			postParams["lang"] = "zh_CN";
			postParams["random"] = "0.3247161018546267";
			postParams["f"] = "json";
			postParams["t"] = "ajax-response";

			PreparePostParams(request, postParams);

			string postData = postParams.ToUrlParameters(true);

			byte[] data = Encoding.UTF8.GetBytes(postData);

			request.ContentLength = data.Length;

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

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			this.FakeID.CheckStringIsNullOrEmpty("FakeID");

			string url = "https://mp.weixin.qq.com/cgi-bin/singlesend";

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;

			request.Referer = string.Format("https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&tofakeid={0}&token={1}&lang=zh_CN",
				HttpUtility.UrlEncode(this.FakeID),
				HttpUtility.UrlEncode(this.LoginInfo.Token));

			request.ContentType = "application/x-www-form-urlencoded";
			request.Method = "POST";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
			request.Headers["X-Requested-With"] = "XMLHttpRequest";

			NameValueCollection postParams = new NameValueCollection();

			postParams["type"] = ((int)this.MessageType).ToString();
			postParams["imgcode"] = string.Empty;
			postParams["token"] = this.LoginInfo.Token;
			postParams["lang"] = "zh_CN";
			postParams["random"] = "0.7978688745877286";
			postParams["f"] = "json";
			postParams["t"] = "ajax-response";
			postParams["ajax"] = "1";
			postParams["tofakeid"] = this.FakeID;

			PreparePostParams(request, postParams);

			string postData = postParams.ToUrlParameters(true);

			byte[] data = Encoding.UTF8.GetBytes(postData);

			request.ContentLength = data.Length;

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

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			this.FunctionName.CheckStringIsNullOrEmpty("FunctionName");

			string url = "https://mp.weixin.qq.com/cgi-bin/modifygroup";

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;

			request.Referer = string.Format("https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&token={0}&lang=zh_CN",
				HttpUtility.UrlEncode(this.LoginInfo.Token));

			request.ContentType = "application/x-www-form-urlencoded";
			request.Method = "POST";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
			request.Headers["X-Requested-With"] = "XMLHttpRequest";

			NameValueCollection postParams = new NameValueCollection();

			postParams["func"] = this.FunctionName;
			postParams["token"] = this.LoginInfo.Token;
			postParams["lang"] = "zh_CN";
			postParams["random"] = "0.7978688745877286";
			postParams["f"] = "json";
			postParams["t"] = "ajax-friend-group";
			postParams["ajax"] = "1";

			PreparePostParams(request, postParams);

			string postData = postParams.ToUrlParameters(true);

			byte[] data = Encoding.UTF8.GetBytes(postData);

			request.ContentLength = data.Length;

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

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters["t"] = "message/list";
			parameters["token"] = this.LoginInfo.Token;
			parameters["lang"] = "zh-CN";

			string url = "https://mp.weixin.qq.com/cgi-bin/home?" + parameters.ToUrlParameters(true);

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;
			request.ContentType = "text/html; charset=UTF-8";
			request.Method = "GET";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";

			return request;
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			string url = "https://mp.weixin.qq.com/cgi-bin/modifycontacts";

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;

			request.Referer = string.Format("https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&token={0}&lang=zh_CN",
				HttpUtility.UrlEncode(this.LoginInfo.Token));

			request.ContentType = "application/x-www-form-urlencoded";
			request.Method = "POST";
			request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
			request.Headers["X-Requested-With"] = "XMLHttpRequest";

			NameValueCollection postParams = new NameValueCollection();

			postParams["contacttype"] = this.GroupID.ToString();
			postParams["tofakeidlist"] = string.Join("|", this.FakeIDs);
			postParams["token"] = this.LoginInfo.Token;
			postParams["lang"] = "zh_CN";
			postParams["random"] = "0.691624744434424";
			postParams["f"] = "json";
			postParams["t"] = "ajax-putinto-group";
			postParams["ajax"] = "1";
			postParams["action"] = "modifycontacts";

			string postData = postParams.ToUrlParameters(true);

			byte[] data = Encoding.UTF8.GetBytes(postData);

			request.ContentLength = data.Length;

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

			return request;
		}
        /// <summary>
        /// 拼接认证url中的额外参数
        /// </summary>
        /// <param name="strReturlUrl"></param>
        /// <returns></returns>
        private static string GetExtraRequestParams(string strReturlUrl)
        {
            HttpRequest request = HttpContext.Current.Request;

            PassportClientSettings clientConfig = PassportClientSettings.GetConfig();

            NameValueCollection parameters = new NameValueCollection();

            parameters.Add("ru", strReturlUrl);
            parameters.Add("to", clientConfig.AppSignInTimeout.ToString());
            parameters.Add("aid", clientConfig.AppID);
            parameters.Add("ip", request.UserHostAddress);
            parameters.Add("lou", GetLogOffCallBackUrl().ToString());
            parameters.Add("m", clientConfig.Method.ToString());

            if (TenantContext.Current.Enabled)
                parameters.Add(TenantExtensions.TenantCodeParamName, TenantContext.Current.TenantCode);
            //string result = "?ru=" + HttpUtility.UrlEncode(strReturlUrl)
            //                + "&to=" + HttpUtility.UrlEncode(clientConfig.AppSignInTimeout.ToString())
            //                + "&aid=" + HttpUtility.UrlEncode(clientConfig.AppID)
            //                + "&ip=" + HttpUtility.UrlEncode(request.UserHostAddress)
            //                + "&lou=" + HttpUtility.UrlEncode(GetLogOffCallBackUrl().ToString())
            //                + "&m=" + HttpUtility.UrlEncode(clientConfig.Method.ToString());

            return "?" + parameters.ToUrlParameters(true);
        }
        /// <summary>
        /// 获取登录或注销的url,设置url中的认证后重定向的returnUrl,设置注销后重定向的logOffAutoRedirect
        /// </summary>
        /// <param name="returnUrl">认证后重定向的地址</param>
        /// <param name="logOffAutoRedirect">是否注销后重定向</param>
        /// <param name="logOffAll">是否注销所有应用</param>
        /// <returns>登录或是注销url</returns>
        public static string GetLogOnOrLogOffUrl(string returnUrl, bool logOffAutoRedirect, bool logOffAll)
        {
            Common.CheckHttpContext();
            string strResult = string.Empty;

            bool fromCookie = false;
            ITicket ticket = GetTicket(out fromCookie);

            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;

            PassportClientSettings settings = PassportClientSettings.GetConfig();
            string strPassportPath = settings.SignInUrl.ToString();

            int nSplit = strPassportPath.LastIndexOf("/");
            strPassportPath = strPassportPath.Substring(0, nSplit + 1);

            if (IsTicketValid(ticket) == true)
            {
                StringBuilder strB = new StringBuilder(1024);

                strB.Append(settings.LogOffUrl);

                NameValueCollection parameters = new NameValueCollection();

                parameters.Add("asid", ticket.SignInInfo.SignInSessionID);
                parameters.Add("ru", returnUrl);
                parameters.Add("lar", logOffAutoRedirect.ToString().ToLower());
                parameters.Add("appID", ticket.AppID);
                parameters.Add("lou", GetLogOffCallBackUrl().ToString());
                parameters.Add("loa", logOffAll.ToString().ToLower());
                parameters.Add("wi", ticket.SignInInfo.WindowsIntegrated.ToString().ToLower());
                parameters.Add("lu", ticket.SignInInfo.OriginalUserID);

                if (TenantContext.Current.Enabled)
                    parameters.Add(TenantExtensions.TenantCodeParamName, TenantContext.Current.TenantCode);

                strB.Append("?" + parameters.ToUrlParameters(true));

                //strB.AppendFormat("?asid={0}&ru={1}&lar={2}&appID={3}&lou={4}&loa={5}&wi={6}&lu={7}",
                //    ticket.SignInInfo.SignInSessionID,
                //    HttpUtility.UrlEncode(returnUrl),
                //    logOffAutoRedirect.ToString().ToLower(),
                //    ticket.AppID,
                //    HttpUtility.UrlEncode(GetLogOffCallBackUrl().ToString()),
                //    logOffAll.ToString().ToLower(),
                //    ticket.SignInInfo.WindowsIntegrated.ToString().ToLower(),
                //    ticket.SignInInfo.OriginalUserID
                //    );

                strResult = strB.ToString();
            }
            else
                strResult = GetSignInPageUrl(returnUrl);

            return strResult;
        }
Beispiel #10
0
		public void SpecialNameValueCollectionToUrlParamsTest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters[""] = "沈峥";
			parameters["gender"] = "";

			Console.WriteLine(parameters.ToUrlParameters(true));
			Assert.AreEqual("gender=", parameters.ToUrlParameters(true));
		}
Beispiel #11
0
		public void DoubleNameValueCollectionToUrlParamsTest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters["name"] = "沈峥";
			parameters["gender"] = "male";

			Assert.AreEqual("name=%e6%b2%88%e5%b3%a5&gender=male", parameters.ToUrlParameters(true));
		}
Beispiel #12
0
		public void SingleNameValueCollectionToUrlParamsTest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters["name"] = "沈峥";

			Assert.AreEqual("name=%e6%b2%88%e5%b3%a5", parameters.ToUrlParameters(true));
		}
		protected override HttpWebRequest PrepareWebRequest()
		{
			NameValueCollection parameters = new NameValueCollection();

			parameters["action"] = "upload_material";
			parameters["f"] = "json";
			parameters["ticket_id"] = this.LoginInfo.AccountID;
			parameters["ticket"] = this.LoginInfo.Ticket;
			parameters["token"] = this.LoginInfo.Token;
			parameters["lang"] = "zh_CN";

			string url = "https://mp.weixin.qq.com/cgi-bin/filetransfer?" + parameters.ToUrlParameters(true); ;

			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

			request.CookieContainer = this.LoginInfo.LoginCookie;

			request.Method = "POST";
			request.UserAgent = "Shockwave Flash";
			request.Accept = "text/*";
			request.ContentType = string.Format("multipart/form-data; boundary={0}", Boundary);
			request.Headers["DNT"] = "1";
			request.ServicePoint.Expect100Continue = false;
			request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);

			string fileName = Path.GetFileName(this.FilePath);

			using (MemoryStream stream = new MemoryStream())
			{
				using (StreamWriter writer = new StreamWriter(stream))
				{
					writer.WriteLine("--" + Boundary);
					writer.WriteLine("Content-Disposition: form-data; name=\"Filename\"");
					writer.WriteLine();
					writer.WriteLine(fileName);

					writer.WriteLine("--" + Boundary);
					writer.WriteLine("Content-Disposition: form-data; name=\"folder\"");
					writer.WriteLine();
					writer.WriteLine("/cgi-bin/uploads");

					writer.WriteLine("--" + Boundary);
					writer.WriteLine("Content-Disposition: form-data; name=\"file\"; filename=\"{0}\"", fileName);
					writer.WriteLine("Content-Type: application/octet-stream");

					writer.WriteLine();

					writer.Flush();

					using (Stream fileStream = LoadFile(this.FilePath))
					{
						Byte[] data = fileStream.ToBytes();
						stream.Write(data, 0, data.Length);
					}

					writer.WriteLine();
					writer.WriteLine("--" + Boundary);
					writer.WriteLine("Content-Disposition: form-data; name=\"Upload\"");
					writer.WriteLine();

					writer.WriteLine("Submit Query");
					writer.Write("--" + Boundary + "--");

					writer.Flush();

					request.ContentLength = stream.Length;
					stream.Seek(0, SeekOrigin.Begin);
					stream.CopyTo(request.GetRequestStream());
				}
			}

			return request;
		}