因為后端是使用.net寫的web api, 所以嘗試直接使用localhost, 但是會報錯:
E/flutter ( 4879): SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 47060
百度了一下錯誤,127.0.0.1 和 localhost在安卓模擬器里面都會指向模擬器的本機地址,而非PC本機地址。
在安卓中,會默認將電腦本機地址映射為10.0.2.2,所以我們需要將localhost:10000修改為10.0.2.2:10000。
再次驗證是否能在模擬器中訪問到我們的本機服務,打開模擬器中的Chrome瀏覽器,輸入連接10.0.2.2:1000, 仍舊報錯“Bad request”。
我不知道是不是因為10.0.2.2 無法映射localhost(只能映射127.0.0.1), 然后.net服務其實是會屏蔽除localhost之外的地址綁定。
你可以嘗試一下,我是可以在本機使用localhost:端口來訪問.net服務,但是不能使用127.0.0.1:端口來訪問.net服務,會報相同的錯誤“Bad request”.
嘗試在hosts文件添加“127.0.0.1 localhost”不能解決我的問題。
我是通過下面方法來解決這個問題的:
1. 我們啟動本地.net服務之后,右下角會出現一個IIS Express的圖標,右鍵並選擇“顯示所有應用程序”
2. 選擇和你相同同名的網站名稱,ctrl+鼠標作鍵如圖位置的配置文件,一般來說,只會出現下面的第一行,第二行是因為我已經添加過了。
3. 在site下面添加127.0.0.1的綁定
4. 重啟VS
5. 再次驗證,使用模擬器中的谷歌瀏覽器訪問10.0.2.2:端口,這時候就應該能夠在模擬器中成功訪問到我們的本地服務。