android - Xamarin Launcher.OpenAsync“请求 url 太长”
问题描述
我正在尝试使用 URI 方案和Xamarin Launcher将图像(它不能是文件,必须是 base64)发送到另一个应用程序。
var uri = new Uri(url);
await Launcher.OpenAsync(uri); // await Launcher.OpenAsync(url);
两者:如果 url 长度超过 2000 个字符,则例外new Uri(url)
。await Launcher.OpenAsync(url)
据我所知,将 base64 字符串传递给其他应用程序(例如编辑图像或打印文档)是正常的。那么为什么 Xamarin 将其限制为 2000 个字符?
有解决方法吗?
编辑:
例外new Uri
:
System.UriFormatException: Invalid URI: The Uri string is too long.
at System.Uri.CreateThis (System.String uri, System.Boolean dontEscape, System.UriKind uriKind) [0x0007b] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/UriExt.cs:55
at System.Uri..ctor (System.String uriString) [0x00014] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/URI.cs:408
例外Launcher.OpenAsync
:
System.UriFormatException: Invalid URI: The Uri string is too long.
at System.Uri.CreateThis (System.String uri, System.Boolean dontEscape, System.UriKind uriKind) [0x0007b] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/UriExt.cs:55
at System.Uri..ctor (System.String uriString) [0x00014] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/URI.cs:408
at Xamarin.Essentials.Launcher.OpenAsync (System.String uri) [0x00013] in D:\a\1\s\Xamarin.Essentials\Launcher\Launcher.shared.cs:32
解决方案
看来这是 System.Uri 类的限制。虽然如果您搜索它没有正式记录,但您会发现很多地方都在讨论这个问题,例如:https ://social.msdn.microsoft.com/forums/en-US/6435996c-4b96-4887-be60-f6e10120f0a0/long -http-get-requests-and-a-uri-max-length-constraint
基本上你必须使用原生类来实现你想要的。
推荐阅读
- c++ - 使用带有预分配 std::unordered_map 的嵌套向量快速构建 unordered_map
>? - elasticsearch - 在 ELK 集群上运行的 metricbeat 代理?
- ios - 即使将 isUserInteraction 启用设置为 true,UITapGesture 也无法正常工作
- python - __init__.py 只导入定义的函数
- elasticsearch - ElasticSearch 按列表字段中的属性聚合
- python - 这个功能有什么问题,我怎样才能让它工作?
- rust - 如何将字符串写入文件?
- javascript - 在 javascript 中将 Float32Array 转换为 base64
- c - C程序中的分段错误
- python-3.x - cygwin 控制台中的 Python datetime.now 不正确