Форум сайта python.su
3
import urllib print urllib.urlencode({'data':'te st'})
import urllib s = '' for i in xrange(256): s+=chr(i) enc = urllib.urlencode({'data':s}) for i,t in enumerate(urllib.unquote(enc[5:])): if s[i] != t: print repr(s[i]), repr(t)
Отредактировано Iskatel (Сен. 5, 2015 14:06:09)
Офлайн
568
Офлайн
3
FishHookТак это данные для POST, причем эдесь УРЛ
пробел в УРЛах никогда не используется
Офлайн
3
Точнее в многочисленных примерах отправки POST используется:
data_to_send = urllib.urlencode({'data':data}) urllib2.urlopen(addr, data_to_send)
Отредактировано Iskatel (Сен. 5, 2015 14:26:05)
Офлайн
568
IskatelДа какая разница то, ПОСТ кодируется точно так же как ГЕТ
Так это данные для POST, причем эдесь УРЛ
Офлайн
568
Когда веб-браузер отправляет POST запрос с элементами веб-формы, по умолчанию интернет тип данных медиа это: «application/x-www-form-urlencoded». Это формат для кодирования пар ключ-значение с возможностью дублирования ключей. Каждая пара ключ-значение отделяется символом &, ключ отделен от значения символом = . В ключах и значениях пробелы заменяются на знак +, и затем, используя URL-кодирование, заменяются все не буквенно-цифровые символы.
Например,
Name: Jonahan Doe
Age: 23
Formula: a + b == 13 %!
будет закодировано как
Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13 %25%21
Начиная с HTML 4.0, формы могут также представить данные в multipart/form, как определено в RFC 2388(см. также RFC 1867 для более ранней экспериментальной версии определенной как расширение HTML 2.0 и упоминаемой в HTML 3.2). Частный случай метода POST при обращении на ту же страницу, которой принадлежит форма, называется обратной передачей.
Офлайн
3
Тоесть если, при приеме, сначала заменить все “+” в строке на “ ” то все будет ОК? Сам плюс (если был во входных данных) всегда закодируется в %2B?
Или все же лучше Base64?
Или заморочится таки с multipart?
Что правильнее? (Проще?) В общем случае передавать нужно бинарные данные, т.е. весь диапазон 0-255.
ЗЫ. Передавать на свой же сервер (BaseHTTPServer)
Отредактировано Iskatel (Сен. 5, 2015 15:03:24)
Офлайн
568
IskatelЯ так думаю, что при приеме нужно применить функцию обратную urlencode.
Тоесть если, при приеме, сначала заменить все “+” в строке на “ ” то все будет ОК?
Офлайн
3
FishHookВ соседней ветке мне подсказали urllib.unquote() - она вроде и есть обратная, но плюс оставляет.
Я так думаю, что при приеме нужно применить функцию обратную urlencode.
Отредактировано Iskatel (Сен. 5, 2015 15:24:04)
Офлайн
.
Отредактировано J.R. (Фев. 28, 2016 12:35:38)
Офлайн