Как именно массив получает urlencoded? - PullRequest
2 голосов
/ 04 июня 2010

Многие языки позволяют передавать массив значений через URL. По разным причинам мне нужно напрямую создать URL вручную. Как массив значений urlencoded?

1 Ответ

3 голосов
/ 04 июня 2010

Похоже, контент в виде MIME-Type: application/x-www-form-urlencoded.

Это тип контента по умолчанию. Формы, представленные с этим типом содержимого, должны быть закодированы следующим образом:

  1. Имена и значения элементов управления экранированы. Символы пробела заменяются на +, а затем зарезервированные символы экранируются, как описано в [RFC1738], раздел 2.2: не буквенно-цифровые символы заменяются на %HH, знак процента и две шестнадцатеричные цифры, представляющие код символа ASCII , Разрывы строк представляются в виде пар "CR LF" (т. Е. %0D%0A).
  2. Имена / значения элементов управления перечислены в порядке их появления в документе. Имя отделяется от значения =, а пары имя / значение отделяются друг от друга &.

Который используется для POST. Чтобы сделать это для GET, вам нужно добавить ? после вашего URL, а остальные почти равны. В комментариях mdma утверждает, что URL может не содержать + для пробела. Вместо этого используйте %20.

Итак, массив значений:

http://localhost/someapp/?0=zero&1=valueone%20withspace&2=etc&3=etc

Часто в библиотеках есть некоторые функции, которые будут выполнять кодировку URL для вас (пункт 1). Второй пункт легко реализуем, зацикливаясь на вашем массиве, создавая строку, добавляя индекс, =, кодированное значение URL и, когда это не последняя запись, &.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...