(Flutter)HTTPClient无效参数:URI中未指定主机

时间:2017-12-24 03:17:35

标签: heroku uri httpclient host flutter

目前正在开发一个允许用户查看存储在Heroku上的数据库的小应用程序,但是在使用数据库的URL时遇到了上述问题:" .herokuapp.com / api /& #34;

var client = createHttpClient();
var response = await client.read('<example>.herokuapp.com/api/<data>');
List data = JSON.decode(response);

Heroku似乎没有使用HTTP(S)或www,后者我认为是问题。

有谁知道如何绕过或解决此问题?

4 个答案:

答案 0 :(得分:4)

问题之一是您的API URL前没有“ http://”;

解决方案 在您的API网址之前添加“ 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}”

答案 1 :(得分:1)

我知道这是一个老问题,但是我偶然发现了这个问题,并通过在URL前面添加“ http://”来解决了这个问题。

答案 2 :(得分:1)

这是因为该应用程序尝试异步获取renderUrl。在取回渲染URL之前,它为null。 然后,NetworkImage(renderUrl ??'')尝试使用空字符串作为url并导致异常。 我不确定这是否是最好的解决方案,但这似乎行得通:

有很多解决方法,下面是其中的一些

  1. 在您的uri之前添加https://

  2. 对于图片:我决定在将图片网址放入小部件之前检查图片网址是否为空:

     CircleAvatar(
        backgroundColor: Colors.grey,
        backgroundImage: _urlImage.isNotEmpty
            ? NetworkImage(_urlImagem)
            : null,
      ),
    

答案 3 :(得分:0)

这对我有用

child: CircleAvatar(
      backgroundImage: _newImage
          ? FileImage(imageFile)
          : imgUrl.isNotEmpty
              ? NetworkImage(imgUrl)
              : null,),