我正在 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。
帮助解决此问题将不胜感激。