Преобразование curl запроса в php код

Тема в разделе "Как сделать...", создана пользователем amber, 13 янв 2014.

  1. amber

    amber Создатель

    Регистр.:
    30 апр 2013
    Сообщения:
    20
    Симпатии:
    1
    здравствуйте!
    не получается преобразовать данную строку в php:
    Пробую так:

    $url = "http://example.ru/users/1";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, "user:key");
    curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s
    curl_setopt($ch, CURLOPT_PUT, "name:Viktor Kalinin"); // set POST method
    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;

    Но результата нет... Буду благодарен если кто-нибудь поможет разобраться с этим запросом...
     
  2. ev-goo

    ev-goo Создатель

    Регистр.:
    28 май 2012
    Сообщения:
    10
    Симпатии:
    9
    Попробуй
    Код:
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, "name:Viktor Kalinin");
     
  3. amber

    amber Создатель

    Регистр.:
    30 апр 2013
    Сообщения:
    20
    Симпатии:
    1
    спасибо за сообщение, но ответ Unsupported Media Type... может кто подскажет терминал, через который можно проверить данный запрос к серверу?
     
  4. amber

    amber Создатель

    Регистр.:
    30 апр 2013
    Сообщения:
    20
    Симпатии:
    1
    Да, вы были правы, -d автоматически запрос делает POST
    Ошибка в передаваемых параметрах может нужно какие-то спец символы добавить?
    Пока делаю так:
    $url = "http://site.ru";
    $post_data = '{"name":"Viktor"}';
    $headers = "Content-Type: application/json";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, "log:key");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    $output = curl_exec($ch);
    curl_close($ch);
    echo $output;

    т.е эту часть строки как-то исправить нужно или спецсимволы может проставить.. -d '{"name": "Viktor Kalinin"}
     
  5. ev-goo

    ev-goo Создатель

    Регистр.:
    28 май 2012
    Сообщения:
    10
    Симпатии:
    9
    А ну точно, там же в json передаются параметры, протупил что то

    Код:
    $array_data = array ("name" => "Viktor");
    $post_data = json_encode($array_data);