【发布时间】: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