2017-07-03 4 views
1

Je me suis inscrite au service Mapquest API, et je suis en train de tester mon application, en utilisant PHP.La clé API Mapquest n'est pas reconnue

Sous Gérer les clés, je crée une nouvelle clé, et Mapquest m'a donné:

consommateurs clés secret client

J'ai cliqué sur Approuver toutes les clés

Je levais les yeux de la documentation de l'API géocodage Post Batch, et il est dit que je devrais inclure la clé comme l'un des paramètres. Je suppose que c'est la clé du consommateur, alors j'ai inclus le mien. Toutefois, lorsque j'appelle l'appel, j'obtiens la réponse suivante:

La clé AppKey fournie avec cette demande n'est pas valide.

Mon code:

$results = mapquest_v1_geocoding_batch_get_location(array('123 Main St, Anytown, WA', '123 Main St, Anytown, WA 98052')); 
pretty_print($results); 

function mapquest_v1_geocoding_batch_get_location($locations) 
{ 
    //&location=Denver, CO&location=1555 Blake St, Denver, CO 80202&location=Boulder&key=KEY 

    $postfields = array (
     'inFormat' => 'kvp', 
     'outFormat' => 'json', 
     'thumbMaps' => FALSE, 
     'maxResults' => 1 
    ); 
    $postfields_string = http_build_query($postfields); 
    foreach ($locations as $location) { 
     $postfields_string .= '&'.http_build_query(array('location' => $location)); 
    } 
    $postfields_string .= '&'.http_build_query(array('key' => PARN_MAPQUEST_TW_TO_FB_KEY)); 
    pretty_echo($postfields_string); 
    $url = 'https://www.mapquestapi.com/geocoding/v1/batch';  
    return jhm_curl_post_call($url, $postfields); 
} 

function jhm_curl_post_call($url, $postfields, $setopts_array = FALSE) 
{ 
    $results = array(); 
    if (!$setopts_array) { 
     $setopts_array = array(); 
    } 
    if (!isset($setopts_array[CURLOPT_RETURNTRANSFER])) { 
     $setopts_array[CURLOPT_RETURNTRANSFER] = TRUE; 
    } 
    if (!isset($setopts_array[CURLOPT_POST])) { 
     $setopts_array[CURLOPT_POST] = TRUE; 
    }  
    $setopts_array[CURLOPT_URL] = $url; 
    $setopts_array[CURLOPT_POSTFIELDS] = http_build_query($postfields); 
    $ch = curl_init(); 
    curl_setopt_array ($ch , $setopts_array); 
    $results['json_response'] = curl_exec($ch); 
    $results['response'] = json_decode($results['json_response'], TRUE); 
    $results['info'] = curl_getinfo($ch); 
    $results['curl_errno'] = curl_errno($ch); 
    $results['curl_error'] = curl_error($ch); 
    curl_close($ch); 
    return $results; 
} 

C'est le postfields_string de $:

inFormat=kvp&outFormat=json&thumbMaps=0&maxResults=1&location=123+Main+St%2C+Anytown%2C+WA&location=123+Main+St%2C+Anytown%2C+WA+98052&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxx 

et les résultats de l'appel:

Array 
(
    [json_response] => The AppKey submitted with this request is invalid. 
    [info] => Array 
     (
      [url] => https://www.mapquestapi.com/geocoding/v1/batch 
      [content_type] => text/plain 
      [http_code] => 403 
      [header_size] => 236 
      [request_size] => 198 
      [filetime] => -1 
      [ssl_verify_result] => 0 
      [redirect_count] => 0 
      [total_time] => 0.265 
      [namelookup_time] => 0.062 
      [connect_time] => 0.109 
      [pretransfer_time] => 0.203 
      [size_upload] => 52 
      [size_download] => 50 
      [speed_download] => 188 
      [speed_upload] => 196 
      [download_content_length] => 50 
      [upload_content_length] => 52 
      [starttransfer_time] => 0.265 
      [redirect_time] => 0 
      [redirect_url] => 
      [primary_ip] => 207.200.103.5 
      [certinfo] => Array 
       (
       ) 

      [primary_port] => 443 
      [local_ip] => 192.168.1.4 
      [local_port] => 50514 
     ) 

    [curl_errno] => 0 
    [curl_error] => 
) 

Répondre

0

Les principaux besoins d'être dans les paramètres d'URL après mapquestapi.com plutôt que dans les données de poste. Alors vous devriez être bon à aller.

+0

Cela n'a aucun sens. Le point de fin de l'API n'inclut pas la clé – EastsideDeveloper

+0

L'URL de la publication contient la clé (http://www.mapquestapi.com/geocoding/v1/batch?key=KEY) et le corps du message contient les adresses à géocoder ({ "locations": [{"ville": "Denver", "état": "CO"}, {"ville": "Boulder", "état": "CO"}], "options": {"maxResults" : -1, "thumbMaps": true, "ignoreLatLngInput": false}} ). Il y a plus d'informations sur la page du guide de l'utilisateur du géocodage par lots. https://developer.mapquest.com/documentation/geocoding-api/batch/post/ – MQBrian