C# экранирование текста в post-запросе

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Всем доброго времени!
Суть проблемы - пытаюсь сделать post-запрос, в самом запросе кроме стандартных переменных (через временные переменные) идет кусок текста, содержащий кавычки и двоеточия. Пробовал экранировать через \ и использовать константы, заменяющие кавычки - результат - в запросе передается как есть, все символы. Подскажите, как решить проблему?
Кусок исходного текста
PHP:
content: (тут переменные)&source={"draft":"","reply":"","forward":"","schedule":""}&template=&sign=0&remind=&receipt=false&subject=&priority=&capcha=&correspondents={"to": (далее еще переменные)
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 406
Благодарностей
1 473
Баллы
113
Обработка текста- urlencode - "кодировать только значения переменных" убрать галочку - все это в переменную , а ее потом в запрос
 
  • Спасибо
Реакции: ArtDir и kapelan28

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Обработка текста- urlencode - "кодировать только значения переменных" убрать галочку - все это в переменную , а ее потом в запрос
Спасибо за вариант решения, но проверка показала, что результат не тот. Почему-то в тело запроса передает все экранирующие символы \ , и в итоге ответ получаю с ошибкой.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Спасибо за вариант решения, но проверка показала, что результат не тот. Почему-то в тело запроса передает все экранирующие символы \ , и в итоге ответ получаю с ошибкой.
А откуда они там взялись? urlencode не экранирует слешем
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
А откуда они там взялись? urlencode не экранирует слешем
хороший вопрос, но после urlencode полученный результат установил в запрос, а потом по монитору трафика посмотрел, что отправилось и пришло в ответ.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
урлеконд кирилицу тольцу только кодирует
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
урлеконд кирилицу тольцу только кодирует
не знал...
один х.. - даже вручную через \ пытался экранировать - ничего не получается. Уже второй день ищу решение, пока без результата.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
и там не всё надо кодировать, урлеконд если на всю строку сделаешь получишь одно
самое простое решение, что не изменяется кинь в переменую со снифера, а что урлекондится то и кодируй, а так получишь не правильную строку контента
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
тоже наверно скоро чекер появится ещё один по майлу ))
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
тоже наверно скоро чекер появится ещё один по майлу ))
ага, но суть не в этом (чекер - это как одна из функций, расширяю функционал действующего шаба). Для меня написание шаблонов - это изучение чего-то нового и повышения своего уровня знаний, остальное как бонус ))
и там не всё надо кодировать, урлеконд если на всю строку сделаешь получишь одно
самое простое решение, что не изменяется кинь в переменую со снифера, а что урлекондится то и кодируй, а так получишь не правильную строку контента
именно так и делал.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
ага, но суть не в этом (чекер - это как одна из функций, расширяю функционал действующего шаба). Для меня написание шаблонов - это изучение чего-то нового и повышения своего уровня знаний, остальное как бонус ))

именно так и делал.
могу сразу сказать что пробел не правильно кодируется
может и правильно только при передаче майлу он просит %20 а урлеконд вроде выдаёт +
 
  • Спасибо
Реакции: kapelan28

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Если используется стандартный кубик POST запроса, то ничего там не нужно экранировать и дополнительно кодировать в UrlEncode, просто вставляй данные, как есть, в обычном формате, тип данных - urlencoded.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
вопрос задам тут , ты через прокси делаешь ??
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
вопрос задам тут , ты через прокси делаешь ??
пока нет, в настройках идет без прокси
Если используется стандартный кубик POST запроса, то ничего там не нужно экранировать и дополнительно кодировать в UrlEncode, просто вставляй данные, как есть, в обычном формате, тип данных - urlencoded.
да, можно, не спорю, но хотел всю логику сделать на C# и в одном кубике ))
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
да, можно, не спорю, но хотел всю логику сделать на C# и в одном кубике ))
В качестве примера, выдернул из реги Mail (данные POST запроса)
C#:
string login = "login";
string domain = "domain";
string captchaId = "captchaId";
string captchaAnswer = "captchaAnswer";

string data = "email=" + login + "@" + domain +
    "&from=" +
    "&reg_anketa={\"id\":\"" + captchaId + "\",\"capcha\":\"" + captchaAnswer + "\"}" +
    "&redirect_uri=https://e.mail.ru/messages/inbox?newreg=1" +
    "&signup_b=1" +
    "&sms_reg=1" +
    "&features=1" +
    "&htmlencoded=false";
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
если есть прокси, опробуй через прокси, у меня просто зависон на этот запрос, в инбокс зависон, написать письмо зависон, просто зависает и пиндос, что на гетах и так же в браузере
развели многопоточность и майл конкретно видимо ужесточил
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
чтобы не плодить переменые создай их в С# и запиши туда готовые значения
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
спасибо за варианты, попробую, скажу - какой рабочий, плюс нагуглил еще один интересный вариант, может он подойдет.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
как бы ты не извращался но это твой контент
2018-03-21_235655.png
 
  • Спасибо
Реакции: kapelan28

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Ура! Проблема решена!
Собственно решение - каждый из проблемных участков кода вынес в переменные и экранировал все кавычками. Потом общий сбор в одну строку.
Как-то так получилось
PHP:
string str1 = @"{""to"":""";
string str2 = @"{""draft"":"""",""reply"":"""",""forward"":"""",""schedule"":""""}";
string str3 = @", "",""cc"":"""",""bcc"":""""}";
string str4 = @"{""list"":[]}&body={""html"":""";
не совсем красиво, но для начала - работает. Потом, может, доведу до более нормального вида.
Всем, кто помогал - большое спасибо!
 
  • Спасибо
Реакции: Soly

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
зачем с0здавать новую переменую если это одно, ну если это не хотишь видеть в коде то создай +100500 переменых, закинь туда, потом будет красиво, только это ничего не изменит

после у тя выглядит ещё так примерно

result = 1 + 2 +3 + 4 + 5 +100500
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
зачем с0здавать новую переменую если это одно, ну если это не хотишь видеть в коде то создай +100500 переменых, закинь туда, потом будет красиво, только это ничего не изменит

после у тя выглядит ещё так примерно

result = 1 + 2 +3 + 4 + 5 +100500
если бы они шли одной цельной строкой - да, хватило бы одной переменной. Для меня сейчас важно было вообще решить эту задачу. А заниматься приведением кода в нормальный вид буду чуть позже, когда всю логику допилю. Я и не говорю, что решение идеальное, я ведь только учусь ))
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
если бы они шли одной цельной строкой - да, хватило бы одной переменной. Для меня сейчас важно было вообще решить эту задачу. А заниматься приведением кода в нормальный вид буду чуть позже, когда всю логику допилю. Я и не говорю, что решение идеальное, я ведь только учусь ))
а я и ничего не говорю что твоё решение плохое, но в твоём решение это одна строка, ты создал 4 переменые, я одну, это одно и тоже, думаю теперь понятно будет
 

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
а я и ничего не говорю что твоё решение плохое, но в твоём решение это одна строка, ты создал 4 переменые, я одну, это одно и тоже, думаю теперь понятно будет
согласен, просто когда мало спишь и много думаешь над решением проблемы, то очевидные решения не замечаешь. Вот отосплюсь и доведу до ума этот код.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
согласен, просто когда мало спишь и много думаешь над решением проблемы, то очевидные решения не замечаешь. Вот отосплюсь и доведу до ума этот код.
тоже верно и у всех кодеров это так, сидишь голову ломаешь и ни как не выходит, не спишь толком, отоспался хорошо и как всё по маслу
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
если в переменной будет некодированный урл с амперсантом - это будет иметь существенное значение
В этом случае правильнее будет значение этой переменной кодировать в UrlEncode.
Хотя конечно, кому как.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)