Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Преобразование curl запроса в php код

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: curl php
alidex
Отправлено: 10 Января, 2014 - 13:13:04
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




здравствуйте!
не получается преобразовать данную строку в php:
PHP:
скопировать код в буфер обмена
  1. curl --user user:pass --header 'Content-Type: application/json' -d '{"name": "Viktor Kalinin"}' -X PUT 'http://example.ru/users/1'


Пробую так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $url = "http://example.ru/users/1";
  3. $ch = curl_init();    
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  5. curl_setopt($ch, CURLOPT_URL, $url);  
  6. curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
  7. curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s
  8. curl_setopt($ch, CURLOPT_PUT, "name:Viktor Kalinin"); // set POST method
  9. $result = curl_exec($ch);
  10. curl_close($ch);  
  11. echo $result;
  12.  


Ошибка в curl_put - пробовал разные способы, но пока не получается...
Надеюсь на Вашу помощь!

(Отредактировано автором: 10 Января, 2014 - 13:40:19)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Января, 2014 - 13:33:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Для начала http://www.php.su/learnphp/datatypes/?string

Затем вкратце ознакомьтесь с HTTP: http://www.php.su/lessons/?lesson_11
Затем прочитайте man к утилите curl, чтобы выяснить что какой флаг значат.
Затем, вооружившись мануалом к php5-curl получится результат.


-----
PostgreSQL DBA
 
 Top
alidex
Отправлено: 13 Января, 2014 - 09:49:52
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Мне кажется я где-то близко к решению, но в итоге все равно ошибка...
Кто разбирается, наставьте на путь истинный...
Делаю вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $url = "http://site.ru";  
  3. $fp = '{"name": "Vikrot Calinin"}';
  4.  $headers = "Content-Type: application/json";
  5.  
  6. $ch = curl_init();  
  7. curl_setopt($ch, CURLOPT_USERPWD,'ligin:pass');  
  8. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  9. curl_setopt($ch, CURLOPT_URL, $url);  
  10. curl_setopt($ch, CURLOPT_PUT, 1);  
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  12. curl_setopt($ch, CURLOPT_INFILE, $fp);  
  13. curl_setopt($ch, CURLOPT_INFILESIZE, strlen($fp));  
  14.  
  15.  

ошибка Method Not Allowed

(Отредактировано автором: 13 Января, 2014 - 10:11:05)

 
 Top
Champion Супермодератор
Отправлено: 13 Января, 2014 - 14:34:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Точно PUT?
 
 Top
alidex
Отправлено: 13 Января, 2014 - 15:36:44
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Champion пишет:
Точно PUT?

если строка имеет вид
PHP:
скопировать код в буфер обмена
  1. curl --user user:pass --header 'Content-Type: application/json' -d '{"name": "Viktor Kalinin"}' -X PUT 'http://example.ru/users/1'

это строка из документации разработчика. используется 4 метода:

GET— получение данных
PUT—обновление данных
POST—создание нового объекта
DELETE—удаление объекта
вот пример строки создания пользователя
PHP:
скопировать код в буфер обмена
  1.  
  2. curl --user дщпшт:зфыы --header 'Content-Type: application/json' -d '{"name": "Kalinin"}' -X POST 'http://site.ru/'
  3.  

С получением данных проблем нет, вот такой код выводит информацию о пользователе
PHP:
скопировать код в буфер обмена
  1.  
  2. $ch = curl_init();  
  3. curl_setopt($ch, CURLOPT_USERPWD, 'login:pass);  
  4. curl_setopt($ch, CURLOPT_URL, $url);  
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  6.  
 
 Top
Champion Супермодератор
Отправлено: 13 Января, 2014 - 21:18:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




put обычно для загрузки файлов. И обычно запрещается веб серверами по соображениям безопасности. И при попыске что-нибудь отправить пишут обычно как раз что-то вроде
alidex пишет:
Method Not Allowed

Может post?
 
 Top
alidex
Отправлено: 13 Января, 2014 - 22:34:01
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Champion пишет:
put обычно для загрузки файлов. И обычно запрещается веб серверами по соображениям безопасности. И при попыске что-нибудь отправить пишут обычно как раз что-то вроде
alidex пишет:
Method Not Allowed

Может post?

постом пробывал, ответ такой же...
(Добавление)
Champion Вы правы, POST, -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"}
 
 Top
zelenin
Отправлено: 13 Января, 2014 - 23:37:39
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $request = curl_init( 'http://example.ru/users/1' );
  3. $options = array(
  4.         CURLOPT_USERPWD, 'user:pass' )
  5.         CURLOPT_CUSTOMREQUEST => 'PUT',
  6.         CURLOPT_HEADER => true,
  7.         CURLOPT_NOBODY => false,
  8.         CURLOPT_RETURNTRANSFER => true,
  9.         CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ),
  10.         CURLOPT_POSTFIELDS => '{"name": "Viktor Kalinin"}'
  11. );
  12.  
  13. curl_setopt_array( $request, $options );
  14. $result = curl_exec( $request );
  15.  
 
 Top
alidex
Отправлено: 14 Января, 2014 - 08:19:54
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




нет, что-то не то, написал разработчикам, может где-то ошибка в запросе...
 
 Top
Champion Супермодератор
Отправлено: 14 Января, 2014 - 11:40:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




alidex пишет:
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

Попробуйте $post_data задать массивом name => 'Viktor kalinin' или "name=Viktor Kalinin" такой строкой, убрать curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); и убрать curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
 Top
alidex
Отправлено: 14 Января, 2014 - 14:54:53
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Champion пишет:
alidex пишет:
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

Попробуйте $post_data задать массивом name => 'Viktor kalinin' или "name=Viktor Kalinin" такой строкой, убрать curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); и убрать curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Да уже что только не пробовал, написал пока разработчикам, может что дельного скажут...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB