Эта тема на forum.dklab.ru


konkere: использование REST API для mail.ru посредством curl
Собственно проблем с авторизацией и посылкой запросов нет, в мане все доступно объяснено - 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);


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

P.S. пытался кодировать перед самой отправкой текст функцией rawurlencode() - результат тот же

Эта тема на forum.dklab.ru