Retrofit连接本地服务器时Logcat报错及URL格式问题排查
问题分析与解决
核心问题出在你的URL配置上,这是导致致命崩溃的直接原因,另外两个Logcat错误可先忽略,优先解决崩溃问题:
BASE地址缺失协议前缀
你定义的const val BASE = "IP/MyApplication/v1/registerUser.php"没有添加http://或https://协议头,Retrofit无法识别合法的URL格式,因此抛出Expected URL scheme 'http' or 'https' but no colon was found异常。
正确写法示例:const val BASE = "http://你的本地服务器IP/MyApplication/v1/"注意替换
你的本地服务器IP为实际局域网IP(如192.168.1.100),且末尾保留斜杠,方便后续与接口路径拼接。POST接口路径不匹配实际需求
当前@POST("/posts")是测试jsonplaceholder接口时的配置,但你的实际PHP接口是registerUser.php,且BASE地址已包含接口所在目录,需修改POST注解:@POST("registerUser.php") suspend fun createPost( @Body user: User ): Response<User>不要加开头的斜杠,否则会覆盖BASE地址的域名部分,造成路径拼接错误。
调整完这两处后重新测试,应该能解决崩溃问题。如果仍有异常,可检查AndroidManifest是否添加了网络权限:<uses-permission android:name="android.permission.INTERNET" />,或确认本地服务器是否允许外部设备访问。
内容的提问来源于stack exchange,提问作者Deusnominus
相关产品推荐
相关产品推荐

