Ikoula Corporate
Espace client
Support
Blog
Wiki
Site web Ikoula
查看“使用该 API 的示例”的源代码
←
使用该 API 的示例
Jump to navigation
Jump to search
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
<span data-link_translate_ro_title="Exemple de utilizare a API" data-link_translate_ro_url="Exemple+de+utilizare+a+API"></span>[[:ro:Exemple de utilizare a API]][[ro:Exemple de utilizare a API]] <span data-link_translate_pl_title="Przykłady użycia interfejsu API" data-link_translate_pl_url="Przyk%C5%82ady+u%C5%BCycia+interfejsu+API"></span>[[:pl:Przykłady użycia interfejsu API]][[pl:Przykłady użycia interfejsu API]] <span data-link_translate_de_title="Beispiele für die Verwendung der API" data-link_translate_de_url="Beispiele+f%C3%BCr+die+Verwendung+der+API"></span>[[:de:Beispiele für die Verwendung der API]][[de:Beispiele für die Verwendung der API]] <span data-link_translate_nl_title="Voorbeelden van het gebruik van de API" data-link_translate_nl_url="Voorbeelden+van+het+gebruik+van+de+API"></span>[[:nl:Voorbeelden van het gebruik van de API]][[nl:Voorbeelden van het gebruik van de API]] <span data-link_translate_it_title="Esempi di utilizzo dell'API" data-link_translate_it_url="Esempi+di+utilizzo+dell%27API"></span>[[:it:Esempi di utilizzo dell'API]][[it:Esempi di utilizzo dell'API]] <span data-link_translate_pt_title="Exemplos de como usar a API" data-link_translate_pt_url="Exemplos+de+como+usar+a+API"></span>[[:pt:Exemplos de como usar a API]][[pt:Exemplos de como usar a API]] <span data-link_translate_es_title="Ejemplos de uso de la API" data-link_translate_es_url="Ejemplos+de+uso+de+la+API"></span>[[:es:Ejemplos de uso de la API]][[es:Ejemplos de uso de la API]] <span data-link_translate_en_title="Examples of using the API" data-link_translate_en_url="Examples+of+using+the+API"></span>[[:en:Examples of using the API]][[en:Examples of using the API]] <span data-link_translate_ru_title="Примеры использования API" data-link_translate_ru_url="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+API"></span>[[:ru:Примеры использования API]][[ru:Примеры использования API]] <span data-link_translate_ja_title="API を使用しての例" data-link_translate_ja_url="API+%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%AE%E4%BE%8B"></span>[[:ja:API を使用しての例]][[ja:API を使用しての例]] <span data-link_translate_ar_title="أمثلة لاستخدام API" data-link_translate_ar_url="%D8%A3%D9%85%D8%AB%D9%84%D8%A9+%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+API"></span>[[:ar:أمثلة لاستخدام API]][[ar:أمثلة لاستخدام API]] <span data-link_translate_fr_title="Exemples d'utilisation de l'API" data-link_translate_fr_url="Exemples_d%27utilisation_de_l%27API"></span>[[:fr:Exemples d'utilisation de l'API]][[fr:Exemples d'utilisation de l'API]] <br /> 这篇文章是从由软件进行自动翻译。你可以[[:fr:Exemples d'utilisation de l'API|看到这篇文章的源代码]]<br /><span data-translate="fr"></span> <!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin --> ==介绍 == <!--T:1--> 如何使用 API 通过一些具体的、 功能的例子。 ==示例函数 == <!--T:2--> <syntaxhighlight lang="php"> // Chemin local vers la clé publique téléchargée sur http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem'); <!--T:3--> // Fonction de chiffrement du mot de passe via la clé publique Ikoula function opensslEncryptPublic($password) { // Vérification de la présence de la clé publique if(file_exists(API_PUB_KEY_PATH)) { if(!empty($password)) { // on récupère la clé public $publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH)); <!--T:4--> // S'il n'y as pas eu d'erreurs lors de la récupération de la clé publique, on continue if ($publicKey !== FALSE) { // Si chiffrement clé publique OK if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE) { // Renvoie du mot de passe crypté return $crypted; } else { return NULL; } } else return NULL; } else return NULL; } else { echo("Erreur - la clé publique n'est pas présente.\n"); return NULL; } } <!--T:5--> // Fontction de création de la signature en fonction des paramètres présents function createSignature($params=array()) { $signature = null; <!--T:6--> // Si il y a au moins un paramètre if (count($params) > 0) { //debug('create signature'); //debug($params); // Triage des paramètres dans le sens croissant ksort($params); // Encodage des paramètres $query = http_build_query($params); <!--T:7--> // Encodage des signes "plus "+" $query = str_replace("+", "%20", $query); <!--T:8--> // Transformation de la chaîne de caractères en minuscule $query = strtolower($query); <!--T:9--> $public_key = ""; // Si le fichier existe, on va récupérer la clé if (file_exists(API_PUB_KEY_PATH)) { $public_key = trim( str_replace( array("\n", '-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----'), array('', '', ''), file_get_contents(API_PUB_KEY_PATH) ) ); } <!--T:10--> // Hashage des paramètres $hash = hash_hmac("SHA1", $query, $public_key, true); <!--T:11--> // Encodage en base64 $signature = base64_encode($hash); } <!--T:12--> return $signature; } <!--T:13--> // Fonction facilitant l'envoie des requêtes vers l'API Ikoula function send_request ($rest, $url_param, $params=array()) { // initialisation de CURL $ch = curl_init(); if($ch) { // Si on a des info on utilise l'api REST sinon on utilise l'api standard (WebService) if($rest) $url = "https://api.ikoula.com/rest/" . $url_param; else $url = "https://api.ikoula.com/?r=" . $url_param; <!--T:14--> // si on est en REST on rajoute le type d'appel (POST,DELETE,PUT,GET,...) sinon on passe en POST curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ($rest)?$rest:"POST"); // Si il y a des paramètres on les rajoute dans la requête if(is_array($params) && count($params) > 0) { $params_str = http_build_query($params); } if($rest=='POST') { // on rentre le nom de paramètre présent dans la requête curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS, $params_str); } else { $url .= (strpos($url,'?') === false ? '?' : '&').$params_str; } // On ajoute l'url curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // on vire les en-tête HTTP pour avoir directement le retour curl_setopt($ch, CURLOPT_HEADER, false); // exécution de la requête $data = curl_exec($ch); // fermeture de l'objet curl_close($ch); <!--T:15--> // retourne la réponse return($data); } return null; } </syntaxhighlight> ==API 调用 == <!--T:16--> <syntaxhighlight lang="php"> //login $login = 'mail@test.com'; //on crypte le mot de passe $crypted_password = base64_encode(opensslEncryptPublic('MOT_DE_PASSE_A_CRYPTER')); <!--T:17--> //liste des VM - retour en JSON <!--T:18--> //liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature) $parameters = array('login' => $login, 'crypted_password' => $crypted_password, 'format' => 'json'); //on génère la signature $signature = createSignature($parameters); //on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API $parameters['signature'] = $signature; //on fait l'appel API $data = send_request(false,'wsflex/vmlist',$parameters); print_r($data); //appel WebService $data2 = send_request('GET','vm/list',$parameters); print_r($data2); //appel REST <!--T:19--> //informations d'une VM - retour en XML <!--T:20--> //liste des paramètres que l'on souhaite envoyer à l'API (pour générer la signature) $parameters = array('login' => $login, 'crypted_password' => $crypted_password, 'format' => 'xml', 'subscr_id' => 12345); //on génère la signature $signature = createSignature($parameters); //on ajoute la signature dans les paramètres à envoyer lors de l'appel à l'API $parameters['signature'] = $signature; //on fait l'appel API $data = send_request(false,'wsflex/vminfo',$parameters); print_r($data); //appel WebService $data2 = send_request('GET','vm/'.$parameters['subscr_id'],$parameters); print_r($data2); //appel REST </syntaxhighlight> ==常见的错误 == <!--T:21--> ;权限被拒绝 : 意味着 API 中使用的用户没有访问所请求的信息或执行所需的操作的权利 ;无法解密密码 : 意味着参数 '''crypted_password''' 不佳已加密或损坏 ;凭据无效 : 意味着身份验证已失败,并且该用户不是所以承认 ;无效或丢失的签名 : 意味着,签名不是存在于由 API,接收的参数或者无效 <br />其他升降机错误是可能的但将语境根据所需的功能。 <!--T:22--> <!-- Fin de l'article --> <br /><br /> 这篇文章似乎你要有用 ? <vote /> <!-- Placez ici la ou les catégories auxquelles se rapporte votre article. Une ligne par catégorie. Ex: [[Category:贡献]] [[Category:Linux]] --> [[Category:API]] <!--T:23--> <!-- Gestion SEO. Indiquez les informations manquantes --> <br /> <comments />
返回至
使用该 API 的示例
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息
投稿
fr-wiki.ikoula.com
en-wiki.ikoula.com
es-wiki.ikoula.com
it-wiki.ikoula.com
nl-wiki.ikoula.com
de-wiki.ikoula.com
pt-wiki.ikoula.com
ru-wiki.ikoula.com
pl-wiki.ikoula.com
ro-wiki.ikoula.com
ja-wiki.ikoula.com
zh-wiki.ikoula.com
he-wiki.ikoula.com
ar-wiki.ikoula.com