Essayer d'aider quelqu'un qui essaie d'accéder et API en utilisant PHP. Mon code utilisant ColdFusion fonctionne bien sur l'API, mais nous ne pouvons pas faire fonctionner le PHP. Dans CF le code utilise urlParams pour envoyer les données:cURL publiez-vous des données dans la portée de l'URL et non dans la portée du formulaire?
<cfhttp url="https://example.com/_api/proxyApi.cfc" method="post" result="httpResult" charset="UTF-8">
<cfhttpparam type="url" name="method" value="apiauth"/>
<cfhttpparam type="url" name="argumentCollection" value="#jsData#"/>
</cfhttp>
Une décharge de l'appel résultant de l'API montre les variables dans l'URL comme ceci:
method = apiauth est la principale fonction d'autorisation , puis la chaîne json dans argumentCollection est passée à la fonction de correction dans l'API par apiauth. De PHP, son curl est affiché sous forme de données de formulaire, pas d'URL et l'API se plaint que les informations requises sont manquantes, car il est dans la mauvaise portée. J'ai essayé de comprendre comment faire champ URL CURL à la place:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $target_url,
CURLOPT_POST => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 2,
CURLOPT_AUTOREFERER => true,
CURLOPT_POSTFIELDS => array(
'method' => 'apiauth',
'argumentCollection' => $json
)
));
La même décharge de l'API montre les mêmes données, mais dans le mauvais champ:
Il semble que si nous pouvons obtenir les données dans la bonne portée, nous progresserons, mais mes connaissances en PHP sont dangereusement limitées.