Unity编辑器中UnityWebRequest调用本地Rust Rocket服务器GET接口失败,其他工具及HttpClient可正常请求
Unity Editor下UnityWebRequest无法连接localhost服务器的问题解决
我最近在开发Unity客户端时遇到了一个特别头疼的问题:尝试用UnityWebRequest向http://localhost:8000/api/board发起GET请求,在浏览器、Postman、Unity编辑器里的.NET HttpClient,甚至WebGL构建后的网页(服务器已配置CORS)都能正常工作,但偏偏在Unity编辑器模式下用UnityWebRequest就失败,报错是Cannot connect to destination host。因为WebGL构建耗时很长,这个问题严重拖慢了我的调试效率。
我已经排查过这些点:
- 关闭了Windows防火墙,排除了网络拦截问题
- 在编辑器里用
UnityWebRequest请求其他公共接口(比如https://httpbin.org/get)完全正常,说明不是UnityWebRequest本身的全局问题
可正常运行的HttpClient代码:
HttpClient client = new HttpClient(); System.Uri uri = new System.Uri("http://localhost:8000/api/board"); string responseBody = await client.GetStringAsync(uri);
失败的UnityWebRequest代码:
System.Uri uri = new System.Uri("http://localhost:8000/api/board"); UnityWebRequest www = UnityWebRequest.Get(uri); UnityWebRequestAsyncOperation operation = www.SendWebRequest(); while (!operation.isDone) await Task.Yield(); if (www.result != UnityWebRequest.Result.Success) { // 错误处理逻辑 }
问题根源与解决方法
最后排查发现,问题出在我用Rust Rocket框架搭建的后端服务器上!服务器默认配置的address = "localhost",当我把它修改为address = "0.0.0.0"之后,Unity编辑器模式下的UnityWebRequest请求立刻就正常工作了。
目前我还没完全搞明白为什么绑定localhost时UnityWebRequest无法访问,而其他工具和HttpClient却可以,但这个修改确实解决了我的问题,分享出来给遇到类似情况的开发者参考。
内容的提问来源于stack exchange,提问作者sharp7j
相关产品推荐
相关产品推荐

