Quel est le problème avec mon appel Curl ? – PHP – Forums SitePoint – Systeme.io


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/odatapas

(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]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *