0

我正在尝试 gomobile 并希望在应用程序启动之前向网络服务器发送一些数据。我正在使用 gomobile 中包含的基本示例应用程序模板。我在 main 开头添加了代码:

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "X.X.X.X:8000/log", strings.NewReader("TEST"))
    client.Do(req)
    app.Main(func(a app.App) {
                ...
        }
        ....
}

该应用程序在启动时立即崩溃。我确定我在 GET 请求中使用了正确的 IP。
HTTP请求的发出方式有什么问题吗?
(我在安卓上测试)

4

1 回答 1

0

http.NewRequest可能返回错误,因为您的 URL 不包含方案 ( http/ https),因此无效。更改"X.X.X.X:8000/log""http://X.X.X.X:8000/log"

你也应该处理错误,即使它只是一个调用panic,因为这会告诉你什么是错误的。

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "http://X.X.X.X:8000/log", strings.NewReader("TEST"))
    if err != nil {
        panic(err)
    }

    _, err = client.Do(req)
    if err != nil {
        panic(err)
    }

    app.Main(func(a app.App) {
                ...
        }
        ....
}

此外,在 android 上进行测试时,您的恐慌可能最终会出现在您可以看到的系统日志中adb logcat(虽然不是 100% 确定 gomobile 应用程序的情况)。

于 2021-02-27T20:01:34.087 回答