Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: использование REST API для mail.ru
 
 автор: Konkere   (14.02.2012 в 08:44)   письмо автору
 
 

Собственно проблем с авторизацией и посылкой запросов нет, в мане все доступно объяснено - http://api.mail.ru/docs/reference/rest/

Проблема возникла при запросе stream.post - посылает текст в раздел "что нового"... Если в параметры text и другие прописать английский текст - все работает, а если по-русски - выдает ошибку: "one of the parameters is missing or invalid: 'text','user_text'"

Запросы делаю курлом:


// вот так не работает!
$fields = "method=stream.post&app_id=12313&secure=1&session_key=13231&sig=12313"&text=привет!";

// а так работает
$fields = "method=stream.post&app_id=12313&secure=1&session_key=13231&sig=12313"&text=hello!";


if( $curl = curl_init() ) {
      
    curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
        $res = curl_exec($curl);
    $res=json_decode($res, true);
        
        echo "<pre>";
    var_dump($res);
    echo "</pre>";
        
    curl_close($curl);

      }


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

Не подскажите, как правильно курлом сделать запрос с нужными кодировкой? В принципе перепробовал разные варианты:


       $header[] = "Accept-Charset: utf-8"; 
       $header[] = "Accept-Language: en-us"; 
  
    curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);


не работает...

  Ответить  
 
 автор: cheops   (14.02.2012 в 16:57)   письмо автору
 
   для: Konkere   (14.02.2012 в 08:44)
 

Не очень понятно, как у вас в одной строке
"method=stream.post&app_id=12313&secure=1&session_key=13231&sig=12313"&text=привет!";
уживаются три двойные кавычки?

  Ответить  
 
 автор: Konkere   (16.02.2012 в 12:10)   письмо автору
 
   для: cheops   (14.02.2012 в 16:57)
 

это я в посте опечатался, а в коде нормально все

  Ответить  
 
 автор: Konkere   (16.02.2012 в 12:13)   письмо автору
 
   для: cheops   (14.02.2012 в 16:57)
 

кодировал текст iconv(), urlencode()... не помогает. писал три раза в app@corp.mail.ru - молчат

  Ответить  
 
 автор: МммммонстеКилл   (16.02.2012 в 15:12)
 
   для: Konkere   (16.02.2012 в 12:13)
 

Приводить надо реальный код.

Приведи пример с urlencode(). Гарантированно неправильно используешь.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования