Всем привет.
Есть у одного хостинга свое api - прикрутил и вроде бы всё ок но(!)
Когда сервер отправляет отчет об ошибке (например из-за того что адрес с таким именем уже существует я получаю вот такое сообщение "{"status":"error","message":"\u041f\u043e\u0447\u0442\..."
\u041f\u043e\u0447\u0442\... - это urlencoded-текст в кодировке UTF-8.
Специально воспроизвожу ошибку
В доках у провайдера на это API написано:
Ответ на POST запрос всегда возвращается в кодировке UTF-8. Может быть возвращен в формате JSON или XML. В рамках документации рассматриваются только примеры в формате JSON.
Ответ всегда содержит поле status, которое может принимать значения error или success.
error: означает, что при попытке выполнить запрос произошла ошибка. При этом детальное описание ошибки будет возвращено в поле message.
{"status":"error","message":"Почтовый ящик с именем test уже существует."}
success: запрос выполнен успешно. При этом, в зависимости от выполненной операции, сервер может возвратить дополнительные данные в поле data.
{"status":"success","data":"219493"}
То есть, насколько я понимаю, нужно сначала [url]
http://php.ru/manual/function.json-decode.html[/url], потом уже взять конкретный элемент массива с ответом и применить к нему [url]
http://php.net/manual/en/function.urldecode.php[/url]
Мой запрос
<?php
$fields = array(
'auth_login' => "moi_login",
'auth_token' => "moi_token",
'class' => "hosting_mailbox",
'method' => "create",
'account' => "moi_acc",
'mailbox' => $_POST['mailbox'],
'password' => $_POST['password'],
);
$fields_string = "";
foreach($fields as $key => $value) {
$fields_string .= $key.'='.urlencode($value).'&';
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://HOSTING/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$response = curl_exec($ch);
curl_close($ch);
echo "Ответ на Ваш запрос: ".$response;
?>
Проблема заключается в том, что я очень хреново знаю php и js. urldecode на пару с json-decode для меня слишком сложно.
Помогите дописать :(