Моя проблема заключалась в том, что у меня есть мой путь как http: // .... и я работаю с файловой системой, тогда мой SVN-путь должен быть file: //, я пытаюсь перераспределить и поместить его в файл: // и это работает хорошо.
Краткий ответ, вам необходимо
(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
... перед тем, как опубликовать их, как этот отрывок из дампа сети ...
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
"Content-type: application / x-www-form-urlencoded" уже по умолчанию с curl -d, ничего лишнего не нужно
-X POST является лишним, так как -d подразумевает, что POST
-d не URL кодирует данные. Чтобы curl сделал это за вас, вам нужно вместо этого использовать --data-urlencode