【问题标题】:Loading image from http request从 http 请求加载图像
【发布时间】:2019-04-02 10:07:16
【问题描述】:

我正在开发一张必须获得不同价值的个人资料卡。我得到了所有的价值,但我也想加载一个网络图像。我正在使用文件制作服务器,我注意到我需要 cookie 来加载它。当我发出请求时,将图像 url 复制粘贴到我的浏览器中,它只会加载。但是每当我将它加载到我的应用程序中时,我都会得到带有我的图像的 401 statusCode。

我只尝试了一个有效的网络图像,我已经阅读了一些关于 coockies 的内容,但我不确定是否需要使用它们以及如何使用它们。我也觉得很奇怪,每当我在浏览器中加载图像时它可以工作,但不能在我的应用程序上工作。

未来的 makeRequest() 异步 { 变量 url4 = "https://fms.xxxxxx.nl/fmi/data/v1/databases/Roscom管理系统/layouts/medewerker pa api/_find"; var body = json.encode({ “询问”: [ {"电子邮件地址 (1)": "xxxx@xxx.nl"} ], });

Map<String, String> headers = {
  'Content-type': 'application/json',
  'Accept': 'application/json',
  "Authorization":
      'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
};

var response = await http.post(url4, body: body, headers: headers);
setState(() {
  var responseJson = json.decode(response.body);
  data = responseJson['response']['data'][0];
  profielfoto = data['fieldData']['iMedewerker Foto'];

  print(profielfoto);
});

Value i get in the terminal

我希望我可以仅使用 var $profielfoto 将图像加载到网络图像中。我不知道如何处理这些 coockies,或者也许有更简单的方法可以做到这一点。我希望有人可以帮助我,如果我需要提供有关服务器或其他任何信息的更多信息,请告诉我。 ;)

【问题讨论】:

    标签: http dart flutter filemaker


    【解决方案1】:

    一些事情。请不要在 setState 中进行任何类型的繁重处理

    https://docs.flutter.io/flutter/widgets/State/setState.html

    一般建议setState方法只用于 包装对状态的实际更改,而不是任何可能的计算 与变化相关联。例如,这里使用的值 build 函数递增,然后将更改写入磁盘, 但只有增量包含在 setState 中:

    setState 告诉小部件何时需要重绘

    https://flutter.dev/docs/cookbook/images/network-image

    String _profilePhoto = "";
    //Change await into an async operation
    http.post(url4, body: body, headers: headers).then( (response) {
       var responseJson = json.decode(response.body);
    
    
       print(data['fieldData']['iMedewerker Foto']);
       setState(() {
    
          _data = responseJson['response']['data'][0];
         _profilePhoto = data['fieldData']['iMedewerker Foto'];
       });
    })
    
    Widget build(BuildContext context){
          //Check if string is empty
         if ( _profilePhoto == "" ){
              return CircularProgressIndicator();
         }else {
               return Image.network( _profilePhoto );
         }
    }
    

    https://flutter.dev/docs/cookbook/images/network-image

    https://pub.dartlang.org/packages/cached_network_image

    您有两种选择从网络中获取图像。我相信我提出了一种方法。

    【讨论】:

    • 感谢您的回复。我试过了,它不起作用我仍然得到 401 状态码。 I/flutter (13994):异常:HTTP 请求失败,状态代码:401,我提到了一些关于 coockies 的内容,也许有文件制作服务器的人知道如何加载图像。我会自己研究它,但没有发现任何有用的东西:(我提到了一些关于 coockies 的事情,我希望有人知道是不是这样。我有一个库,但我不知道如何将它实现到我自己的代码中。我'我只是希望有人知道这是解决方案还是可能有其他解决方案。
    【解决方案2】:

    授权令牌必须是问题。当用户登录时,安全服务器将返回此令牌。然后所有随后的请求都必须在“授权标头”中包含此令牌。如果它不存在或不正确,则服务器返回 401

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多