问题描述
我正在试用 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请求的方式有什么问题吗?
(我在 Android 上测试)
解决方法
http.NewRequest
可能返回错误,因为您的网址不包含架构 (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 应用是否是这种情况)。>