[SMD], обычная ситуация с 1 потоком. Нужно распаралеливать. 1 поток обновляет форму, 2 - отправляет запросы.
Для ознакомления с потоками всегда привожу эту статью. А вот и вторая часть где расписаны прелести BackgroundWorker и взаимодействия с UI.
Да, с этим понятное дело. но проблема в том что фтп то не факт что будет открыт вообще, т.е. нужно именно используя RDP протокол как-это это реализовать, или файл закинуть и запустить, вообщем в этом направлении.
Шифрование текста C# Всем здравствуйте! Помогите кто может... Есть таблица, в заголовках столбцов стоят буквы, а в строке цифры, соответственно нужно зашифровать. Но есть несколько столбцов, в названиях которых стоит не одна буква, а несколько, например "NO". Тогда данный цикл рассматривается каждую букву в отдельности (например: n=1,o=2,no=3) и на выводе получается такой шифр:12, вместо просто 3...пытался как вариант делать что-то типа result += s1.Replace("no", "3");, но тогда получается эта 3 добавляется после каждой буквы, поскольку цикл... Код для шифрования такой есть у меня: Code: string text = textBox2.Text; for (int i = 0; i < text.Length; i++) { string letter = text[i].ToString(); foreach (DataGridViewColumn column in dataGridView1.Columns) { if (column.HeaderText == letter) { string cellValue = dataGridView1.CurrentRow.Cells[column.Index].Value.ToString(); var values = cellValue.Split(' '); int index = rnd.Next(values.Length); result += values[index]; } } } listBox1.Items.Add(result);
Не понял саму суть шифрования, обьясните не примере. Например: BING -> как это будет шифроваться и что будет на выходе?
Помогите составить регулярку для такой строчки Code: <a href="http://site.ru/profile/?id=id5171258">id5171258</a> Нужно выдрать "id5171258" Делаю вот таким методом: Code: string pattern_pars = "регулярка"; Regex regex_pars = new Regex(pattern_pars); Match match_pars = regex_pars.Match(html); Заранее очень признателен.
Ребят, помогите, весь день сеня убил и код все равно не рабочий.. вот завершающая часть кода реггера, проблема 100% в ней.. и в моем неумении делать запросы с "multipart/form-data" .. еще хотел спросить на счет этих цифр в запросе "23271238692" - это ведь просто рандомное число, ни на что не влияющее? Code: Random rnd = new Random(); int rnd_int = rnd.Next(0000, 9999); string sQueryString = String.Empty; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"authenticity_token\"\n\n" + match_AUTH_TOKEN.Groups[1].ToString() + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[login]\"\n\n" + "sdfouihwjkbs23r5a" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[name]\"\n\n" + "cvuisb sdfsdf" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[password]\"\n\n" + "qwe123qwe" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[password_confirmation]\"\n\n" + "qwe123qwe" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[email]\"\n\n" + "[email protected]" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"user[language_id]\"\n\n" + "2" + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"captcha\"\n\n" + check + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"captcha_key\"\n\n" + match_cap2.Groups[1].ToString() + "\n"; sQueryString += "-----------------------------23271238692" + rnd_int + "\nContent-Disposition: form-data; name=\"commit\"\n\n" + "Sign up\n-----------------------------23271238692" + rnd_int + "--"; HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://site.com/register"); myHttpWebRequest.Method = "POST"; myHttpWebRequest.Referer = "http://site.com/signup"; myHttpWebRequest.AllowAutoRedirect = false; myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1"; myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"); myHttpWebRequest.ContentType = "multipart/form-data; boundary=---------------------------23271238692"+rnd_int; myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookie); //string sQueryString = ""; byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString); myHttpWebRequest.ContentLength = ByteArr.Length; myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length); // делаем запрос HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); html = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd(); вот оригинальный запрос, т.е. как должно быть Code: POST /register HTTP/1.1 Host: site.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://site.com/signup Cookie: cook Content-Type: multipart/form-data; boundary=---------------------------207991835220448 Content-Length: 1251 -----------------------------207991835220448 Content-Disposition: form-data; name="authenticity_token" N5hOMmVyzz+zSiaPS9qrEeuVwrkfL92D+SUReDQSkgs= -----------------------------207991835220448 Content-Disposition: form-data; name="user[login]" ijosdjfg982j -----------------------------207991835220448 Content-Disposition: form-data; name="user[name]" sdkjfnhjk sdjfnk -----------------------------207991835220448 Content-Disposition: form-data; name="user[password]" qwe123qwe -----------------------------207991835220448 Content-Disposition: form-data; name="user[password_confirmation]" qwe123qwe -----------------------------207991835220448 Content-Disposition: form-data; name="user[email]" [email protected] -----------------------------207991835220448 Content-Disposition: form-data; name="user[language_id]" 2 -----------------------------207991835220448 Content-Disposition: form-data; name="captcha" kfglaf -----------------------------207991835220448 Content-Disposition: form-data; name="captcha_key" 96801d3925bb3c092713554191cf1b363630144a -----------------------------207991835220448 Content-Disposition: form-data; name="commit" Sign up -----------------------------207991835220448-- а вот то, что у меня выходит после запроса моего "софта" Code: POST /register HTTP/1.1 Referer: http://site.com/signup User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Content-Type: multipart/form-data; boundary=---------------------------232712386921968 Cookie: cook Host: site.com Content-Length: 1212 Expect: 100-continue -----------------------------232712386921968 Content-Disposition: form-data; name="authenticity_token" hYH2c9g4R0oFSEeNjfRXjoot8zCYNNOUc0XwmHRqvCg= -----------------------------232712386921968 Content-Disposition: form-data; name="user[login]" sdfouihwjkbs23r5a -----------------------------232712386921968 Content-Disposition: form-data; name="user[name]" cvuisb sdfsdf -----------------------------232712386921968 Content-Disposition: form-data; name="user[password]" qwe123qwe -----------------------------232712386921968 Content-Disposition: form-data; name="user[password_confirmation]" qwe123qwe -----------------------------232712386921968 Content-Disposition: form-data; name="user[email]" [email protected] -----------------------------232712386921968 Content-Disposition: form-data; name="user[language_id]" 2 -----------------------------232712386921968 Content-Disposition: form-data; name="captcha" geoliv -----------------------------232712386921968 Content-Disposition: form-data; name="captcha_key" 6a1a5cf90241c027b83afbb8930bc907da1fe50a -----------------------------232712386921968 Content-Disposition: form-data; name="commit" Sign up -----------------------------232712386921968-- в чем может быть проблема?
[SMD] , Это лишнее. Не нужно тебе отправлять этот boundary=---------------------------23271238692 http://ru.wikipedia.org/wiki/MIME
Лол. А чем тогда разделять разные поля? [SMD], какой ответ отправляет сервер? Bad request? Здесь может быть ошибка при создании значения поля Content-Length. В твоем запросе это поле равняется 1212, хотя на самом деле 1252.
Точно не скажу, но пару раз писал подобное, и никогда не занимался разделением вручную. Все и так работало. А вообще конечно: http://msdn.microsoft.com/ru-ru/library/system.net.mime.contenttype.boundary%28v=vs.90%29.aspx
Да и не надо заниматься разделением вручную. В приведенном выше коде немного низкоуровневый подход и это, считаю, не совсем правильно. На более высоком уровне об этом заботиться не нужно. Нет, куки не не влияют на значение Content-Length.
в примере удачного запроса тоже отличаются Content-Length В реале 1249, а написано что 1251. Покажите пример, где используется не низкоуровневый подход. Я юзал вот такое Code: public class PostData5 { private string s_method = String.Empty; public string Method { get { return this.s_method; } } private string s_action = String.Empty; public string Action { get { return this.s_action; } } public string Param { get { return this.s_param; } } private string s_param = String.Empty; public PostData5(string s_PostString) { if (s_PostString.IndexOf("=") != -1) { this.s_method = s_PostString.Substring(0, s_PostString.IndexOf("=")); this.s_action = s_PostString.Substring(s_PostString.IndexOf("=") + 1); if (this.s_action.IndexOf("!") != -1) { this.s_action = s_action.Substring(0, this.s_action.IndexOf("!")); this.s_param = s_PostString.Substring(s_PostString.IndexOf("!") + 1); } } } public static string MultiFormData(string Key, string Value, string Boundary) { lock (typeof(PostData5)) { string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"\r\n\r\n"; output += Value + "\r\n"; return output; } } public static string MultiFormDataFile(string Key, string Value, string FileName, string FileType, string Boundary) { lock (typeof(PostData5)) { string output = "--" + Boundary + "\r\n"; output += "Content-Disposition: form-data; name=\"" + Key + "\"; filename=\"" + FileName + "\"\r\n"; output += "Content-Type: " + FileType + " \r\n\r\n"; output += Value + "\r\n"; return output; } } } но эффект был тот же, поэтому и начал все вручную писать..
Нет, правильно. В самом конце запроса браузер отправляет дополнительные 2 байта \r\n (посмотреть можно в сниффере). Также правильнее отправлять не просто перевод на новую строчку \n, как в твоем запросе, а строчку \r\n. Классы для работы с multipart/form-data можешь найти на: https://github.com/ Или можешь посмотреть еще эту тему: http://stackoverflow.com/questions/219827/multipart-forms-from-c-sharp-client Также посмотри на эту библиотеку: http://habrahabr.ru/post/146475/
вопрос по c#: есть таблица dataGridView1 в которую выводятся данные из БД, о так же требуется что бы была возможность добавления записей напрямую из dataGridView1 и редактирование их там же, на счет добавления все происходит нормально, а вот с редактированием возникли вопросы, как и почему заполняю таблицу сед. образом: Code: string sql = "select fam as 'Фамилия', name as 'Имя', otch as 'Отчество', doljn as 'Должность', stavka as 'Ставка', sovmest as 'Совместитель', prinyat as 'Принят', uvolen as 'Уволен' from tabel.dbo.workers"; Class1.con.Open(); SqlCommand sqlCommand = new SqlCommand(sql, Class1.con); Class1.dataAdapter = new SqlDataAdapter(sqlCommand); SqlCommandBuilder commandBuilder = new SqlCommandBuilder(Class1.dataAdapter); dataTable.Clear(); Class1.dataAdapter.Fill(dataTable); dataGridView1.DataSource = dataTable; Class1.con.Close(); Обновляю по нажатию кнопки так: Code: Class1.dataAdapter.Update(dataTable); После редактирования уже существующих записей вылетает такая ошибка: Динамическое создание SQL для UpdateCommand не поддерживается для SelectCommand, не возвращающей никаких сведений о столбце ключей. как исправить??
добавил еще 1 таблицу, которая переименовывает должность из ID в имя и стала появляться ошибка: Динамическое создание SQL для нескольких базовых таблиц не поддерживается. ___ при добавлении или изменении данных, как тут быть?