1. 程式人生 > 實用技巧 >Flutter 連線本地服務(模擬器)

Flutter 連線本地服務(模擬器)

因為後端是使用.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:埠,這時候就應該能夠在模擬器中成功訪問到我們的本地服務。