0

我正在 nrf9160 开发套件上开发嵌入式 c 应用程序。

我的目标是使用 googleapis.com/geolocation 服务为我的系统提供位置数据,但我一直无法这样做。

我在谷歌云平台上创建了一个计费账户,创建了一个api密钥,并使用证书颁发机构服务创建并尝试使用各种https证书,但我无法连接。

每当我调用 connect() 函数尝试连接到 googleapis.com 时,都会收到“连接被拒绝”错误。

这是我正在使用的代码:

err = cert_provision();
if (err) {
    printk("getaddrinfo() failed, err %d\n", errno);
    return;
}

((struct sockaddr_in *)res->ai_addr)->sin_port = htons(HTTPS_PORT);

fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2);
if (fd == -1) {
    printk("Failed to open socket!\n");
    goto clean_up;
}

/* Setup TLS socket options */
err = tls_setup(fd);
if (err) {
    goto clean_up;
}

printk("Connecting to %s\n", "googleapis.com");
err = connect(fd, res->ai_addr, sizeof(struct sockaddr_in));
if (err) {
    printk("connect() failed, err: %d\n", errno);
    goto clean_up;
}

注意:我已经能够使用特定于这些站点的证书连接到 google.com 和 github.com。

帮助解决此问题将不胜感激。

4

0 回答 0