【问题标题】:spawnUri() with "https"带有“https”的 spawnUri()
【发布时间】:2014-09-18 22:42:20
【问题描述】:

我正在尝试从托管在 HTTPS 服务器中的文件中动态加载代码。

有没有人成功使用 spawnUri() 和 https:// URIs? 我已经测试过,它适用于 http:// URI。

但是https:// 我不断收到:

Not a known scheme: https://example.com/MyIsolate.dart
#0      _filePathFromUri (dart:_builtin:289)
#1      _loadDataAsync (dart:_builtin:359)'
Stack Trace:
#0      Isolate.spawnUri (dart:isolate-patch/isolate_patch.dart:256)
...
...

我想知道我是否遗漏了什么。

例如,您可以简单地尝试以下代码:

import 'dart:async';
import 'dart:isolate';

ReceivePort receivePort;

main() {
  receivePort = new ReceivePort();
  Isolate.spawnUri(Uri.parse("https://example.com/MyIsolate.dart"), null, receivePort.sendPort);
}

我的 Dart VM 版本是 macos_x64 上的 1.6.0

编辑: 使用 Uri.parse() 解析 uri 字符串,然后将其作为参数传递给 spawnUri。 (正如@user568109 所指出的)

【问题讨论】:

    标签: dart dart-isolates


    【解决方案1】:

    它需要一个Uri对象,所以在传递之前解析它:

    Isolate.spawnUri(Uri.parse("https://example.com/MyIsolate.dart"), null, sendPort);
    

    我相信方案是protocol,默认情况下它是http。因此,对于其他协议,您必须明确给出。最好始终将其转换为UriUricore 库中。

    【讨论】:

    • 你是对的解析,我在创建这个例子时忘记了它......但我确实解析并测试了它。我仍然得到同样的例外。这让我想知道这是否是一个错误?我会给你一个 +1 来查找代码中的错误,但不能接受答案,因为它不能解决问题:)
    【解决方案2】:

    我认为它是由几天前修复的这个错误引起的 http://dartbug.com/20837

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多