#php #put
#php #put
Вопрос:
Я делаю PUT
запрос, но не могу получить доступ к отправленным данным, я всегда string(0) ""
возвращаюсь.
Код, который я использую для получения PUT
данных, является:
public function editProduct($id) {
$put = file_get_contents('php://input',true);
return var_dump($put);
}
Запрос PUT
thanasisem@debian:~$ curl -i -X PUT -d arg=123 -d arg2=345 localhost/laravelproject/public/products/5
HTTP/1.1 200 OK
Date: Mon, 30 Jun 2014 17:22:59 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14 deb7u11
Cache-Control: no-cache
X-Frame-Options: SAMEORIGIN
Set-Cookie: laravel_session=eyJpdiI6IjdcL3dYVlM1ZXZOZ0JHMVQrb1o1ME1sa3c3QTdTNnRXUnhxTWFDeHJSVDBJPSIsInZhbHVlIjoicTVPb2QwdThNRE1xUnh4VWZnWW5FT3ZTQUxKaE1RdWtycjNVUmlPWVZCZmVNcVBaVFY0Z0k1bEpSV0phVG5TckNWSkh1S2tsR1NEbmxvcFpna3lDOEE9PSIsIm1hYyI6ImI4ZmRlZTM1ODAyNDY3YjY5ZGQyZTE5NGZiMTEzZWVlOWUzZDIyZTI4MmE3MjM4MDM5NGFkZTRjOWQ4Yzk2OGQifQ%3D%3D; expires=Mon, 30-Jun-2014 19:22:59 GMT; path=/; httponly
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
string(0) ""
thanasisem@debian:~$
Комментарии:
1. Я предполагаю, что это в контексте функции? Покажите весь ваш код, необходимый для воспроизведения этого.
2. Просто обновил код.
3. Ошибок нет? Если вы повторяете что-то после своего вызова
editProduct()
, видите ли вы его вывод?4. Вы говорите, что ваш вывод гласит:
string(0) ""
?5. Если это так, то
file_get_contents()
работает нормально. Покажите захват пакета вашего запроса и отредактируйте свой вопрос, чтобы включить то, что вы получаете обратно.
Ответ №1:
Решаемая.
Мне пришлось ввести -H 'Content-Type: application/json'
свой PUT
запрос, чтобы он работал.
Созданный мной успешный PUT
запрос выглядит следующим образом:
curl -X PUT -H 'Content-Type: application/json' -d '{"firstName":"Kris", "lastName":"Jordan"}' localhost/laravelproject/public/products/5
Ответ №2:
var_dump
выполняет немедленный вывод и имеет void
возвращаемый тип. Итак, вы выводите все, что вы загрузили, а затем возвращаете практически ничего.
Вы, вероятно, хотите
return file_get_contents('php://input');
вместо этого.
Комментарии:
1. Это не должно иметь значения Marc, он должен видеть вывод
var_dump
. Он добавил больше информации в комментариях выше. Что-то не так с запросом.