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; }
public void SpecialNameValueCollectionToUrlParamsTest() { NameValueCollection parameters = new NameValueCollection(); parameters[""] = "沈峥"; parameters["gender"] = ""; Console.WriteLine(parameters.ToUrlParameters(true)); Assert.AreEqual("gender=", parameters.ToUrlParameters(true)); }
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)); }
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; }