【问题标题】:Using a custom web server for sharing Anchor IDs doesn't work使用自定义 Web 服务器共享 Anchor ID 不起作用
【发布时间】:2019-04-30 22:12:01
【问题描述】:

我正在尝试使用我自己的 Python cgi 脚本来存储和提供 Anchor ID。一切都与示例存储库中的 Swagger 共享服务器一起工作,但不知何故,当我切换到我的 Python 服务器时,我收到一个错误,并且应用程序一直在寻找锚点。

我假设我所做的与 Swagger 脚本所做的完全相同:我将 Anchor ID 发送到服务器并返回一个 Anchor 编号,以便稍后再次请求 ID。 据我了解,ID 需要作为字符串进行交换,这也是我从 Python 服务器返回的内容(内容类型:文本/纯文本)。

但是,当我尝试解析密钥/从服务器获取 Anchor ID 时,我在 Android 上遇到以下错误:

这是来自 logcat 的相关错误消息:

04-29 07:33:01.031: I/Unity(28756): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
04-29 07:33:02.062: I/Unity(28756): State from DemoStepLookForAnchor to DemoStepLookingForAnchor
04-29 07:33:02.062: I/Unity(28756):  
04-29 07:33:02.062: I/Unity(28756): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
04-29 07:33:02.141: E/Unity(28756): InvalidOperationException: bad lexical cast: source type value could not be interpreted as target. Request CV: . Response CV: .
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.NativeLibraryHelpers.CheckStatus (System.IntPtr handle, Microsoft.Azure.SpatialAnchors.status value) [0x000cc] in <b52d7a321113460294136f243fd7bd66>:0 
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.CloudSpatialAnchorSession.CreateWatcher (Microsoft.Azure.SpatialAnchors.AnchorLocateCriteria criteria) [0x00019] in <b52d7a321113460294136f243fd7bd66>:0 
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.Unity.Samples.AzureSpatialAnchorsDemoWrapper.CreateWatcher () [0x00008] in <b52d7a321113460294136f243fd7bd66>:0 
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.Unity.Samples.AzureSpatialAnchorsSharedAnchorDemoScript.AdvanceLocateFlowDemo () [0x00090] in <b52d7a321113460294136f243fd7bd66>:0 
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.Unity.Samples.AzureSpatialAnchorsSharedAnchorDemoScript.AdvanceDemo () [0x00018] in <b52d7a321113460294136f243fd7bd66>:0 
04-29 07:33:02.141: E/Unity(28756):   at Microsoft.Azure.SpatialAnchors.Unity.

可能出了什么问题? 非常感谢!

【问题讨论】:

  • 该错误消息“bad lexical cast”可能意味着您创建的观察者使用无效的锚点 ID。您是否测试过您的服务器(使用 Postman 或类似工具)以确保它返回 ID?
  • 我不认为这是问题所在,因为我检查了日志中的返回 ID,它们看起来都一样。使用Python服务器时:05-16 00:05:09.152: I/Unity(4290): Found key 1242713e-2538-4cfa-a47f-79f806047996使用swagger服务器时:05-16 09:54:15.261: I/Unity(15678): Found key 6e523d9c-709c-49df-ad2d-7a3de07fa3cb
  • 你能分享你的代码吗?
  • 当然!在这里您可以找到更新的 AnchorExchanger.cs:pastebin.com/rpnYvJ9V 您可以看到查询“myServer”布尔值的编辑。这是 python 服务器:pastebin.com/bynCfh85。除此之外,我只更改了 AzureSpatialAnchorsSharedAnchorDemoScript.cs 中的 BaseSharingUrl 检查。非常感谢您对此进行调查!
  • 我终于找到了问题!问题是我对 Python 的一半了解:除了使用不可靠的数据库(anydbm 更好)之外,我错误地通过 print 输出 Anchor ID 字符串,它在末尾添加了换行符,从而使 Anchor ID 无效.现在使用sys.stdout.write,它工作得很好。很抱歉这个完全与 Azure/Unity 无关的问题打扰您。

标签: python unity3d azure-spatial-anchors


【解决方案1】:

JanLa 在评论中回答:

问题是我对 Python 的了解不足:除了使用不可靠的数据库(anydbm 更好)之外,我错误地通过 print 输出 Anchor ID 字符串,它在末尾添加了换行符,因此无效锚点 ID。现在使用sys.stdout.write,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多