Краткий ответ, нужно
(a) отправьте его как -H «Тип содержимого: application / x-www-form-urlencoded».
(b) указать параметры как Object [field] = value - например, User [name] будет ссылаться на поле имени в некотором пользовательском объекте.
(c) [Не требуется, потому что вы используете curl] кодировать параметры и POST / PUT их.
Кодирование параметров
Кодировка достаточно проста, и, хотя curl сделает это за вас, полезно разобраться. Я процитировал выдержку из спецификации W3C ...
«
application / x-www-form-urlencoded
Это тип содержимого по умолчанию. Формы, представленные с этим типом содержимого, должны быть закодированы следующим образом:
Имена и значения элементов управления экранированы. Символы пробела заменяются на +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
% HH ', знак процента и две шестнадцатеричные цифры, представляющие код символа ASCII. Разрывы строк представляются в виде пар "CR LF" (т. Е. `% 0D% 0A ').
Имена / значения элементов управления перечислены в порядке их появления в документе. Имя отделяется от значения =' and name/value pairs are separated from each other by
& '.
"
Простой пример (форма нового пользователя)
В приведенном ниже примере показано, как отправить простую форму «Новый пользователь».
Если в объекте пользователя есть поля для имени, пароля, адреса электронной почты и т. Д., Я указываю их следующим образом ...
user[firstname]=chris&user[login]=cmccauley&user[company_id]=8&user[email]=&user[surname]=mccauley
тогда керл избежит их, чтобы дать ...
user%5Bfirstname%5D=chris&user%5Blogin%5D=cmccauley&user%5Bcompany_id%5D=8&user%5Bemail%5D=&user%5Bsurname%5D=mccauley
... прежде чем публиковать их как этот отрывок из свалки ...
Свалка проволочной акулы
POST /users/19 HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:3000/users/19/edit
Cookie: _my_session=048d330143de668e027c8cd52654e8c5
Content-Type: application/x-www-form-urlencoded
Content-Length: 259
user%5Bfirstname%5D=chris&user%5Blogin%5D=cmccauley&user%5Bcompany_id%5D=8&user%5Bemail%5D=&user%5Bsurname%5D=mccauley&user_password=********&user%5Bjob_id%5D=14&user%5Bpassword%5D=dd793a64b74e108fcdc5d809040e24afcc21ad2c&authenticity_token=&id=19&_method=PUT