Curl call ne renvoie rien. J’ai vérifié que cela fonctionne avec Postman.
$params finira par être un tableau, mais puisque l’API accepte les $ littéraux dans les variables, je devrai trouver quelque chose à utiliser autre que http_build_query(), car il encode le $.
L’API doit renvoyer un tableau JSON.
$base_url="https://resoapi.com/reso/odata/";
$endpoint="Property";
$params="$top=10";
$url = $base_url. $endpoint . '?' . $params;
$access_token = 'mytoken';
$cURLConnection = curl_init();
curl_setopt($cURLConnection, CURLOPT_URL, $url);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".$access_token
));
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);
$phoneList = curl_exec($cURLConnection);
curl_close($cURLConnection);
$jsonArrayResponse - json_decode($phoneList);
var_dump($jsonArrayResponse);
Vous avez de la documentation pour cette API ? Attend-il une requête POST au lieu d’une requête GET ?
J’ai de la documentation, mais rien qui m’a donné des indices sur ce que je fais mal.
Lorsque j’utilise Postman, j’obtiens une réponse comme prévu avec GET https://resoapi.com/reso/odata/Property?$top=10 et en ajoutant le jeton de support approprié.
POST n’est pas pris en charge, il doit s’agir d’un GET.
Documentation
Curieusement, leur documentation ne dit pas que le mot « porteur » devrait être dans l’en-tête…
Lors de l’utilisation de Postman, le mot « Bearer » est présent et renvoie des données.
Si je supprime la méthode « Autorisation » du facteur et que je saisis simplement, ajoutez manuellement « Autorisation : mytoken ». Cela fonctionne toujours de la même manière. Cela ne semble pas faire de différence si le mot « Porteur » est présent.
et juste pour la raison… vous envoyez la demande à https://resoapi.utahrealestate.com/reso/odata
pas
(il manque la partie « utahrealestate »), n’est-ce pas ?
J’utilise la bonne URL d’API dans le code réel. Techniquement, j’utilise https://resoapi.rmlsweb.com/reso/odata… qui est la même implémentation, mais un serveur différent.
Lorsque j’exécute le code manuellement via la ligne de commande, j’obtiens un retour de « Variable non définie $jsonArrayResponse… »
Lorsque j’essaie d’utiliser l’exemple de code dans la documentation (qui n’utilise pas d’appel curl), j’obtiens des erreurs de renogitaiton SSL…
$token = 'YourBearerToken';
/* Create the base url for the Property resource */
$url="https://resoapi.utahrealestate.com/reso/odata/Property?$orderby=ListingKeyNumeric";
/* Apply any filters (ie. Active Residential). Skip this if you want all listings */
$filters = array("StandardStatus eq Odata.Models.StandardStatus'Active'", "PropertyType eq Odata.Models.PropertyType'Residential'");
$url .= '&$filter=" . implode(" and ', $filters);
/* Apply the $top option. This is the number of listings that can be pulled in one request.
This value may vary depending on vendor configuration
*/
$top = 200;
$url .= '&$top=' . $top;
/* Create a function for making the request */
function getResponse($url, $token){
$opts = (
"http" => (
"method" => "GET",
"header" => "Authorization: Bearer $token"
)
);
$context = stream_context_create($opts);
$url = str_replace(" ", "%20", $url); //make sure white spaces are encoded
$response = file_get_contents($url, false, $context);
return $response;
}
/* Start the $skip option at 0. This is the offset and needs to be incremented by the value in $top with each request. */
$skip = 0;
do{
$request_url = $url . '&$skip=' . $skip;
$response = getResponse($request_url, $token);
$json = json_decode($response, true);
$listings = $json('value');
foreach($listings as $listing){
//write or update $listing to db
}
$skip += $top;
}while(count($listings) > 0);
Avertissement PHP : file_get_contents() : l’opération SSL a échoué avec le code 1. Messages d’erreur OpenSSL :
erreur:0A000152:routines SSL::renégociation héritée non sécurisée désactivée dans /…/cr-rmls.php à la ligne 48
Avertissement PHP : file_get_contents() : Échec de l’activation de la cryptographie dans /…/cr-rmls.php à la ligne 48
Avertissement PHP : file_get_contents(https://resoapi.rmlsweb.com/reso/odata/Property?$orderby=ListingKeyNumeric&$filter=StandardStatus%20eq%20Odata.Models.StandardStatus’Active’%20and%20PropertyType%20eq%20Odata.Models .PropertyType’Residential’&$top=200&$skip=0) : Échec de l’ouverture du flux : l’opération a échoué dans /…/cr-rmls.php à la ligne 48
Avertissement PHP : Tentative d’accès à l’offset du tableau sur une valeur de type null dans /…/cr-rmls.php à la ligne 65
Avertissement PHP : l’argument foreach() doit être de type array|object, null donné dans /…/cr-rmls.php à la ligne 67
Erreur fatale PHP : Erreur de type non détectée : count() : Argument #1 ($value) doit être de type Countable|array, null donné dans /…/cr-rmls.php:74
[ad_3]