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

kapelan28

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

именно так и делал.
могу сразу сказать что пробел не правильно кодируется
может и правильно только при передаче майлу он просит %20 а урлеконд вроде выдаёт +
 
  • Спасибо
Реакции: kapelan28
Если используется стандартный кубик POST запроса, то ничего там не нужно экранировать и дополнительно кодировать в UrlEncode, просто вставляй данные, как есть, в обычном формате, тип данных - urlencoded.
 
Если используется стандартный кубик POST запроса, то ничего там не нужно экранировать и дополнительно кодировать в UrlEncode
зависит от того, что в переменных
 
вопрос задам тут , ты через прокси делаешь ??
 
вопрос задам тут , ты через прокси делаешь ??
пока нет, в настройках идет без прокси
Если используется стандартный кубик POST запроса, то ничего там не нужно экранировать и дополнительно кодировать в UrlEncode, просто вставляй данные, как есть, в обычном формате, тип данных - urlencoded.
да, можно, не спорю, но хотел всю логику сделать на C# и в одном кубике ))
 
да, можно, не спорю, но хотел всю логику сделать на 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";
 
если есть прокси, опробуй через прокси, у меня просто зависон на этот запрос, в инбокс зависон, написать письмо зависон, просто зависает и пиндос, что на гетах и так же в браузере
развели многопоточность и майл конкретно видимо ужесточил
 
чтобы не плодить переменые создай их в С# и запиши туда готовые значения
 
спасибо за варианты, попробую, скажу - какой рабочий, плюс нагуглил еще один интересный вариант, может он подойдет.
 
как бы ты не извращался но это твой контент
2018-03-21_235655.png
 
  • Спасибо
Реакции: kapelan28
Ура! Проблема решена!
Собственно решение - каждый из проблемных участков кода вынес в переменные и экранировал все кавычками. Потом общий сбор в одну строку.
Как-то так получилось
PHP:
Развернуть Свернуть Копировать
string str1 = @"{""to"":""";
string str2 = @"{""draft"":"""",""reply"":"""",""forward"":"""",""schedule"":""""}";
string str3 = @", "",""cc"":"""",""bcc"":""""}";
string str4 = @"{""list"":[]}&body={""html"":""";
не совсем красиво, но для начала - работает. Потом, может, доведу до более нормального вида.
Всем, кто помогал - большое спасибо!
 
  • Спасибо
Реакции: Soly
зачем с0здавать новую переменую если это одно, ну если это не хотишь видеть в коде то создай +100500 переменых, закинь туда, потом будет красиво, только это ничего не изменит

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

result = 1 + 2 +3 + 4 + 5 +100500
 
зачем с0здавать новую переменую если это одно, ну если это не хотишь видеть в коде то создай +100500 переменых, закинь туда, потом будет красиво, только это ничего не изменит

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

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

а я и ничего не говорю что твоё решение плохое, но в твоём решение это одна строка, ты создал 4 переменые, я одну, это одно и тоже, думаю теперь понятно будет
 
а я и ничего не говорю что твоё решение плохое, но в твоём решение это одна строка, ты создал 4 переменые, я одну, это одно и тоже, думаю теперь понятно будет
согласен, просто когда мало спишь и много думаешь над решением проблемы, то очевидные решения не замечаешь. Вот отосплюсь и доведу до ума этот код.
 
согласен, просто когда мало спишь и много думаешь над решением проблемы, то очевидные решения не замечаешь. Вот отосплюсь и доведу до ума этот код.
тоже верно и у всех кодеров это так, сидишь голову ломаешь и ни как не выходит, не спишь толком, отоспался хорошо и как всё по маслу
 
если в переменной будет некодированный урл с амперсантом - это будет иметь существенное значение
В этом случае правильнее будет значение этой переменной кодировать в UrlEncode.
Хотя конечно, кому как.
 

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