我注册了Mapquest API服务,现在正在使用PHP测试我的应用程序。
在Manage Keys下,我创建了一个新密钥,Mapquest给了我:
消费者密钥 消费者秘密
我点击了批准所有密钥
我查看了Geocoding API Post Batch的文档,它说我应该将密钥作为一个参数包括在内。
我认为它是消费者密钥,所以我包括了我的。但是,当我拨打电话时,我得到以下回复:
随此请求提交的AppKey无效。
我的代码:
$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;
}
这是$ postfields_string:
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
和通话结果:
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] =>
)
答案 0 :(得分:0)
密钥需要在mapquestapi.com之后的url参数中,而不是在post数据中。然后你应该好好去。