Вложенные параметры модели во время сообщения HTML

Моя проблема заключалась в том, что у меня есть мой путь как http: // .... и я работаю с файловой системой, тогда мой SVN-путь должен быть file: //, я пытаюсь перераспределить и поместить его в файл: // и это работает хорошо.

8
задан cmaughan 4 June 2009 в 12:11
поделиться

2 ответа

Краткий ответ, вам необходимо

(a) отправить его как -H «Content-type: application / x-www-form-urlencoded».

(b) указать параметры как Object [field] = value - например, User [name] будет ссылаться на поле имени в некотором пользовательском объекте.

(c) [Не требуется, потому что вы используете curl] кодируйте параметры и POST / PUT их.


Кодирование параметров

Кодирование достаточно простое, и хотя curl сделает это за вас, полезно понять Это. Я процитировал выдержку из спецификации W3C ...

Простой пример (форма нового пользователя)

В следующем примере показано, как отправить простую форму «нового пользователя».

Если у меня есть поля в объекте пользователя для имени, пароля, адреса электронной почты и т. Д., Я указываю их вот так ...

user[firstname]=chris&user[login]=cmccauley&user[company_id]=8&user[email]=&user[surname]=mccauley

тогда curl ускользнет от них, чтобы дать ...

user%5Bfirstname%5D=chris&user%5Blogin%5D=cmccauley&user%5Bcompany_id%5D=8&user%5Bemail%5D=&user%5Bsurname%5D=mccauley

... перед тем, как опубликовать их, как этот отрывок из дампа сети ...



Дамп Wireshark


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
12
ответ дан 5 December 2019 в 12:12
поделиться

"Content-type: application / x-www-form-urlencoded" уже по умолчанию с curl -d, ничего лишнего не нужно

-X POST является лишним, так как -d подразумевает, что POST

-d не URL кодирует данные. Чтобы curl сделал это за вас, вам нужно вместо этого использовать --data-urlencode

2
ответ дан 5 December 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: