public void StartSend(object parms) { while (true) { SetSpaceeButtonStatus(true); AppenSpaceCmd("开始发布说说"); #region 登录账号并初始化 string[] qqlist = File.ReadAllLines("qq.txt"); foreach (string qqstr in qqlist) { string[] qq = qqstr.Split(','); string qqhaoma = qq[0]; string password = qq[1]; string nickname = qq[2]; AppenSpaceCmd(qqhaoma + "发布"); string cookiepath = "cookie/" + qqhaoma + ".txt"; string token = ""; if (File.Exists(cookiepath)) { spacecc = CookieHelper.ReadCookieFromFile(cookiepath); token = QQSpaceHelper.GetToken(spacecc, qqhaoma); } int logintime = 0; while (token == "") { logintime++; if (logintime == 10) { AppenSpaceCmd("登录失败,放弃!"); break; } AppenSpaceCmd(nickname + "[" + qqhaoma + "]未登录,正在第" + logintime.ToString() + "次尝试登录!"); spacecc = QQSpaceHelper.Login(qqhaoma, password); CookieHelper.SaveCookie(cookiepath, spacecc); token = QQSpaceHelper.GetToken(spacecc, qqhaoma); } if (token == "") { continue; } AppenSpaceCmd(nickname + "[" + qqhaoma + "]已登录"); string g_tk = QQSpaceHelper.Getgtk(spacecc.GetCookieHeader(new Uri("http://qzone.qq.com")).ToString()); QQHao qqhao = new QQHao(); qqhao.Qqhaoma = qqhaoma; qqhao.Password = password; qqhao.G_tk = g_tk; qqhao.Token = token; string result = QQSpaceHelper.GetUserInfo(qqhao, spacecc); #endregion DirectoryInfo TheFolder = new DirectoryInfo("待发布"); DirectoryInfo nextFolder = TheFolder.GetDirectories()[0];//发布选品库第一条 AppenSpaceCmd(nickname + "[" + qqhaoma + "]发布正文:" + nextFolder.Name); ArrayList imgs = new ArrayList(); foreach (FileInfo NextFile in nextFolder.GetFiles()) { if (NextFile.Extension == ".jpg" || NextFile.Extension == ".gif") { AppenSpaceCmd("上传图片"); UploadImageData imagedata = QQSpaceHelper.UploadPic(NextFile.FullName, spacecc, qqhao); imgs.Add(imagedata); } } string content = " "; if (!IsGuidByReg(nextFolder.Name)) { content = nextFolder.Name; } QQSpaceHelper.SendShuoshuoWithPic(content, imgs, spacecc, qqhao); Directory.Move(nextFolder.FullName, "已发布/" + nextFolder.Name); AppenSpaceCmd(nickname + "[" + qqhaoma + "]发布完成"); } int jiange = Convert.ToInt32(this.nud_spacejiange.Value); AppenSpaceCmd("此次发布完毕,等待" + jiange.ToString() + "分钟"); Thread.Sleep(jiange * 60 * 1000); } }
public static UploadImageData UploadPic(string filepath, CookieContainer spacecc, QQHao qqhao) { string picpath = filepath; CookieCollection ccl = spacecc.GetCookies(new Uri("http://qzone.qq.com")); string url = string.Format("http://shup.photo.qzone.qq.com/cgi-bin/upload/cgi_upload_image?g_tk={0}", qqhao.G_tk); FileStream file = new FileStream(picpath, FileMode.Open); byte[] bb = new byte[file.Length]; file.Read(bb, 0, (int)file.Length); file.Close(); Image img = byteArrayToImage(bb); string skey = ccl[6].Value; string p_skey = ccl[1].Value; MsMultiPartFormData form = new MsMultiPartFormData(); form.AddFormField("Filename", Path.GetFileName(filepath)); form.AddFormField("qzonetoken", qqhao.Token); form.AddFormField("photoData", "filename"); form.AddFormField("exif_info", "extendXml:"); form.AddFormField("backUrls", "http://upbak.photo.qzone.qq.com/cgi-bin/upload/cgi_upload_image,http://119.147.64.75/cgi-bin/upload/cgi_upload_image"); form.AddFormField("skey", skey); form.AddFormField("refer", "shuoshuo"); form.AddFormField("output_charset", "utf-8"); form.AddFormField("zzpaneluin", qqhao.Qqhaoma); form.AddFormField("uploadtype", "1"); form.AddFormField("exttype", "0"); form.AddFormField("hd_width", "2048"); form.AddFormField("albumtype", "7"); form.AddFormField("hd_height", "10000"); form.AddFormField("zzpanelkey", ""); form.AddFormField("charset", "utf-8"); form.AddFormField("filename", "filename"); form.AddFormField("p_uin", qqhao.Qqhaoma); form.AddFormField("hd_quality", "96"); form.AddFormField("output_type", "json"); form.AddFormField("uin", qqhao.Qqhaoma); form.AddFormField("p_skey", p_skey); form.AddFormField("upload_hd", "1"); form.AddFormField("Filename", "xml"); form.AddFormField("output_type", "xml"); form.AddStreamFile("filename", Path.GetFileName(picpath), bb); form.AddFormField("Upload", "Submit Query"); form.PrepareFormData(); form.GetFormData(); string host = "shup.photo.qzone.qq.com"; //url = string.Format("http://upload.t.qq.com/asyn/uploadpicCommon.php?call=2&uin={0}&g_tk={1}&rand={2}&_ps1={3}&_ps2=null", uin, weiboGtk, rand.NextDouble(), _ps1); string ContentType = "multipart/form-data; boundary=" + form.Boundary; HttpHelper help = new HttpHelper(); HttpItem item = new HttpItem() { URL = url, CookieCollection = ccl, ResultCookieType = ResultCookieType.CookieCollection, Host = host, Accept = "*/*", UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36", ContentType = ContentType, Method = "POST", PostDataType = PostDataType.Byte, PostdataByte = form.GetFormData().ToArray(), Encoding = Encoding.UTF8, ProxyIp = "ieproxy" }; item.Header.Add("Origin", "http://qzs.qq.com"); HttpResult result = help.GetHtml(item); string resulthtml = result.Html;//上传图片,测试成功 string jsonstr = resulthtml.Replace("_Callback(", "").Replace(");", ""); UploadImageData imagedata2 = Newtonsoft.Json.JsonConvert.DeserializeObject <UploadImageData>(jsonstr); return(imagedata2); }
public void UploadImageShouldReturnOKTest() { UserRepositorySpy spy_repository = new UserRepositorySpy(); CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass(); UsersController target = new UsersController(spy_repository, spy_checker); byte[] fakeImage = new byte[] { 10, 11, 12 }; UploadImageData arg = new UploadImageData() { FileName = "image1.jpg", ImageType = "image/jpeg", ImageBuffer = fakeImage }; var config = new HttpConfiguration(); var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/users/UploadImage"); var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}"); var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "users" }, { "action", "UploadImage" } }); target.ControllerContext = new HttpControllerContext(config, routeData, request); target.Request = request; target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config; var actual = target.UploadImage(arg); Assert.AreEqual(HttpStatusCode.OK, actual.StatusCode); }
public HttpResponseMessage UploadImage(UploadImageData imageData) { if ((imageData.ImageBuffer == null) || (imageData.ImageBuffer.Length == 0)) throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest)); int authUserId = credentialsChecker.GetAuthUserId(HttpContext.Current); if (authUserId != -1) repositoryUsers.AddOrUpdatePhoto(authUserId, imageData.ImageBuffer); else throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Unauthorized)); return Request.CreateResponse(HttpStatusCode.OK); }
public void UploadImageShouldCallRepositoryTest() { UserRepositorySpy spy_repository = new UserRepositorySpy(); CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass(); UsersController target = new UsersController(spy_repository, spy_checker); byte[] fakeImage=new byte[] { 10, 11, 12 }; UploadImageData arg = new UploadImageData() { FileName = "image1.jpg", ImageType = "image/jpeg", ImageBuffer = fakeImage}; var config = new HttpConfiguration(); var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/users/UploadImage"); var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}"); var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "users" }, { "action", "UploadImage" } }); target.ControllerContext = new HttpControllerContext(config, routeData, request); target.Request = request; target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config; var actual = target.UploadImage(arg); bool successPassImage = true; if ((spy_repository.AddOrUpdatePhotoPhoto != null) && (spy_repository.AddOrUpdatePhotoPhoto.Length == fakeImage.Length)) { for (int ind = 0; ind < fakeImage.Length; ind++) { if (spy_repository.AddOrUpdatePhotoPhoto[ind] != fakeImage[ind]) { successPassImage = false; break; } } } else { successPassImage = false; } Assert.IsTrue(successPassImage && (spy_repository.AddOrUpdatePhotoUserId == 1)); }