Toit - 如何使用 `http.Client` 连接到 `localhost`?
Toit - How can I connect to `localhost` using `http.Client`?
我正在尝试在本地网络上的 ESP32 上测试 Toit。我的笔记本电脑上有一个 fastapi
应用程序 运行ning,我正在尝试 运行 GET 请求。
我正在使用 http
软件包:
$ toit pkg install github.com/toitlang/pkg-http
我的代码main.py
:
import http
import net
import encoding.json
URL ::= "localhost:8000"
PATH ::= "/"
main:
network := net.open
client := http.Client network
// The `get` method automatically closes the connection when
// the response has been fully read.
response := client.get URL PATH
data := json.decode_stream response.body
print data
但我收到错误消息:Connection refused
$ toit run --device <UUID> main.toit
2022-05-30T20:47:00.111752Z: <process initiated>
2022-05-30T20:47:00.384733Z: <stack trace>
EXCEPTION error.
Connection refused
0: TcpSocket.connect system/modules/tcp.toit:149:40
1: TcpSocket.connect system/modules/tcp.toit:139:12
2: WifiNetworkInterface.tcp_connect system/components/wifi.toit:101:7
3: NetworkInterfaceResource.tcp_connect system/components/network.toit:95:26
4: register_network.<lambda> system/components/network.toit:26:23
5: KernelBroker.register_descriptor_procedure.<lambda> system/kernel/rpc.toit:44:14
6: RpcRequest_.process.<block> <sdk>/rpc/broker.toit:98:26
7: RpcRequest_.process <sdk>/rpc/broker.toit:95:3
8: RpcRequestQueue_.ensure_processing_task_.<lambda>.<block>.<block> <sdk>/rpc/broker.toit:214:20
9: RpcRequestQueue_.ensure_processing_task_.<lambda>.<block> <sdk>/rpc/broker.toit:209:9
10: RpcRequestQueue_.ensure_processing_task_.<lambda> <sdk>/rpc/broker.toit:204:56
2022-05-30T20:47:00.518790Z: <process terminated - exit code: 1>
无论我使用 localhost:8000
还是 127.0.0.1:8000
,我得到的结果都是一样的。
我可以使用简单的 cURL 命令访问笔记本电脑上的端点,因此端点正常工作。
toit run
命令在ESP32上执行应用。因此,localhost
指的是设备本身,而不是您的机器。
您可以尝试 运行 在您的机器上本地运行 Toit 程序(使用 Toit 的 open-source 版本:https://github.com/toitlang/toit/releases),或者您可以更改 localhost
到您机器的 IP 地址。
如何获取本地计算机的 IP 地址取决于您的操作系统。在我的 Linux 机器上,我只需键入 ip address
.
我正在尝试在本地网络上的 ESP32 上测试 Toit。我的笔记本电脑上有一个 fastapi
应用程序 运行ning,我正在尝试 运行 GET 请求。
我正在使用 http
软件包:
$ toit pkg install github.com/toitlang/pkg-http
我的代码main.py
:
import http
import net
import encoding.json
URL ::= "localhost:8000"
PATH ::= "/"
main:
network := net.open
client := http.Client network
// The `get` method automatically closes the connection when
// the response has been fully read.
response := client.get URL PATH
data := json.decode_stream response.body
print data
但我收到错误消息:Connection refused
$ toit run --device <UUID> main.toit
2022-05-30T20:47:00.111752Z: <process initiated>
2022-05-30T20:47:00.384733Z: <stack trace>
EXCEPTION error.
Connection refused
0: TcpSocket.connect system/modules/tcp.toit:149:40
1: TcpSocket.connect system/modules/tcp.toit:139:12
2: WifiNetworkInterface.tcp_connect system/components/wifi.toit:101:7
3: NetworkInterfaceResource.tcp_connect system/components/network.toit:95:26
4: register_network.<lambda> system/components/network.toit:26:23
5: KernelBroker.register_descriptor_procedure.<lambda> system/kernel/rpc.toit:44:14
6: RpcRequest_.process.<block> <sdk>/rpc/broker.toit:98:26
7: RpcRequest_.process <sdk>/rpc/broker.toit:95:3
8: RpcRequestQueue_.ensure_processing_task_.<lambda>.<block>.<block> <sdk>/rpc/broker.toit:214:20
9: RpcRequestQueue_.ensure_processing_task_.<lambda>.<block> <sdk>/rpc/broker.toit:209:9
10: RpcRequestQueue_.ensure_processing_task_.<lambda> <sdk>/rpc/broker.toit:204:56
2022-05-30T20:47:00.518790Z: <process terminated - exit code: 1>
无论我使用 localhost:8000
还是 127.0.0.1:8000
,我得到的结果都是一样的。
我可以使用简单的 cURL 命令访问笔记本电脑上的端点,因此端点正常工作。
toit run
命令在ESP32上执行应用。因此,localhost
指的是设备本身,而不是您的机器。
您可以尝试 运行 在您的机器上本地运行 Toit 程序(使用 Toit 的 open-source 版本:https://github.com/toitlang/toit/releases),或者您可以更改 localhost
到您机器的 IP 地址。
如何获取本地计算机的 IP 地址取决于您的操作系统。在我的 Linux 机器上,我只需键入 ip address
.