You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Golang和HereApi获取路线/地理位置周边充电站详情

解决HERE EV API凭证无效问题(同API Key可访问其他服务)

同一API Key能正常访问其他HERE服务,但调用EV充电站查询接口时返回“凭证无效”,大概率是权限配置、端点或代码细节问题,以下是具体解决步骤:

1. 确认API Key的EV服务权限

HERE的API Key默认不会开启所有服务权限,你需要在开发者后台检查该Key的权限列表,确保Electric Vehicle (EV) Charging Stations API已被启用——哪怕Key能用于地图、搜索等服务,EV服务可能需要单独开启。

2. 验证API端点有效性

你当前使用的https://ev-v2.cc.api.here.com/ev/stations.json是v2版本端点,需确认该版本是否仍兼容你的Key权限,或者是否需要切换到官方推荐的最新版本端点。

3. 修正代码中的问题

你的Go代码存在语法和最佳实践缺陷,可能间接导致请求异常,修正后的代码如下:

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "net/url"
)

var apiKey = "XXXXXXXX"
var latitude = 42.36399
var longitude = -71.05493

func main() {
    // 解析基础URL,避免手动拼接出错
    baseURL, err := url.Parse("https://ev-v2.cc.api.here.com/ev/stations.json")
    if err != nil {
        log.Fatalln("解析URL失败:", err)
    }

    // 结构化设置查询参数
    params := url.Values{}
    params.Set("prox", fmt.Sprintf("%f,%f,5000", latitude, longitude))
    params.Set("connectortype", "31")
    params.Set("apiKey", apiKey)
    baseURL.RawQuery = params.Encode()

    res, err := http.Get(baseURL.String())
    if err != nil {
        log.Fatalln("请求发送失败:", err)
    }
    defer res.Body.Close() // 必须关闭响应体,避免资源泄漏

    body, err := io.ReadAll(res.Body)
    if err != nil {
        log.Fatalln("读取响应失败:", err)
    }

    fmt.Println(string(body))
}

修正点说明:

  • 用结构化方式构建URL参数,避免手动拼接时的格式错误
  • 替换废弃的ioutil.ReadAll为标准库推荐的io.ReadAll
  • 添加defer res.Body.Close()确保响应体资源被正确释放

4. 检查请求参数合法性

确认connectortype=31是当前API版本支持的有效值,不同版本的API对参数取值范围可能有差异,需对照官方文档验证。

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:20:23