2015-09-11 3 views
2

Мне нужно сделать запрос PUT, отправляющий данные json, я написал код ниже, но данные не отправлены. Может кто-нибудь помочь?PHP CURL PUT запрос с данными

$url = 'https://example.com'; 
$data='{"example":"valor"}'; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_PUT, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
$result = curl_exec($curl);  
print_r($result); 

благодаря

+0

Какие ошибки вы получаете. – StillLearnin

+0

У меня такая же проблема. Запрос отправляется, но целевой сервер не получил его. Вы нашли какое-нибудь предложение? –

+0

@EvgeniyTimchenko Я не помню, что именно решить мою проблему, но я поставил еще несколько вариантов, как (CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE, CURLOPT_COOKIESESSION, CURLOPT_SSL_VERIFYPEER, CURLOPT_AUTOREFERER, CURLOPT_USERAGENT, CURLOPT_POSTFIELDS и CURLOPT_HTTPHEADER) –

ответ

1

Я думаю, я знаю ваш вопрос. Попробуйте добавить

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

РНР документы намекают, что если вы не сделаете этого, выполняя скручивание будет просто вывести содержимое непосредственно на страницу, которая, если вы используете это как сценарий, который Безразлично» т выводят ничего, очевидно, ничего не показывают. Это должно сделать $result равное что-то, а затем позволяют print_r это

Ссылка: http://php.net/manual/en/function.curl-setopt.php

+0

Это уже в моем коде, если у вас есть какие-либо идеи ? –

+0

@LucianoMarqueto Я вижу, что у вас есть 'curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, 1);', однако для устранения неполадок попробуйте заменить '' '' на 'истину'. У вас есть какие-либо ошибки, которые вы получаете на странице? – UnstableEagle

+0

ok, я попытался перейти от «1» в «true», но не имел никакого эффекта. –

0

Я хотел бы предложить вам использовать Guzzle. Это оболочка вокруг CURL, которая абстрагирует всю конфигурацию и дает вам множество удобных методов для удобства использования.

Вы можете установить жрать, следуя инструкциям, приведенным в следующей ссылке: http://guzzle.readthedocs.org/en/latest/overview.html#installation

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

require 'vendor/autoload.php';  
    use GuzzleHttp\Client; 

    $url = 'https://example.com'; 
    $data= array("example" => "valor"); 

    $client = new Client(); 
    $response = $client->request('PUT', $url, [ 
     'json' => $data 
    ]); 

    print_r($response); 

Я использовал жрать вместо сырого завиток на многих проектах, и нашел, что это большая экономия времени.

0

У меня была такая же проблема. Я решил, изменив

curl_setopt($curl, CURLOPT_URL, $url); 

в

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); 

До этого, локон попытаться отправить файл или что-то подобное, с 100-продолжать, но нам нужно размещать JSON.

Смежные вопросы