Osc*_*ott 10 uri host heroku httpclient flutter
目前正在开发一个允许用户查看存储在 Heroku 上的数据库的小应用程序,但是我在使用数据库的 URL 时遇到了上述问题:“.herokuapp.com/api/”。
var client = createHttpClient();
var response = await client.read('<example>.herokuapp.com/api/<data>');
List data = JSON.decode(response);
Run Code Online (Sandbox Code Playgroud)
Heroku 似乎不使用 HTTP(S) 或 www,我认为后者是问题所在。
有谁知道我如何绕过或解决这个问题?
问题之一是 API URL 前没有“http://”;
解决方案 在您的 API URL示例之前添加“http://” API_URL = “api.openweathermap.org/data/2.5/weather?q={city%20name}&appid={your%20api%20key}”
通过添加“http://”它变成“ http://api.openweathermap.org/data/2.5/weather?q= {city%20name}&appid={your%20api%20key}”
这是因为应用尝试异步获取 renderUrl。在取回渲染 Url 之前,它为空。NetworkImage(renderUrl ?? '') 然后尝试使用空字符串作为 url 并导致异常。我不确定这是否是最好的解决方案,但这似乎有效:
有很多方法可以解决这个问题,这里是其中一些
https://在你的uri之前添加
对于 Image:我决定在将其放入小部件之前检查图像 url 是否为空:
CircleAvatar(
backgroundColor: Colors.grey,
backgroundImage: _urlImage.isNotEmpty
? NetworkImage(_urlImagem)
: null,
),
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您在最新版本的 flutter 中仍然遇到此问题,请尝试检查以下内容。
以前uri是String类型。现在它是http 请求的Uri类型。
如果我们尝试使用 url 作为
String urlPath = '<example>.herokuapp.com/api/<data>';
client.read(Uri(path: urlPath));
Run Code Online (Sandbox Code Playgroud)
我们将得到异常,即URI 中未指定主机
这可以通过使用Uri类中的parse方法来解决
client.read(Uri.parse(urlPath));
Run Code Online (Sandbox Code Playgroud)
它解决了这个问题。
| 归档时间: |
|
| 查看次数: |
27072 次 |
| 最近记录: |