【问题标题】:JSON data cannot be fetched in my App but displaying in XCode Debugging AreaJSON 数据无法在我的应用程序中获取,但显示在 XCode 调试区域中
【发布时间】:2016-07-16 05:11:25
【问题描述】:

您好,我正在使用 Unity3D 为 iOS 构建一个应用程序。我正在使用 UnityWebRequest 从我的服务器获取数据(POST 请求)。它适用于我的 Unity 编辑器,但不适用于我的 iPhone。不过我在XCode的调试窗口中其实可以看到我想要的JSON数据,如下图,

You are using download over http. Currently unity adds NSAllowsArbitraryLoads 
to Info.plist to simplify transition, but it will be removed soon. Please 
consider updating to https.
Unhandled Exception: System.NotSupportedException: 
/Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/icalls/mscorlib/System.Reflection.Emit/DynamicMethod.cpp(26) : Unsupported internal call for IL2CPP:DynamicMethod::destroy_dynamic_method - System.Reflection.Emit is not supported.
  at System.Reflection.Emit.DynamicMethod.Finalize () [0x00000] in <filename unknown>:0 
UnityEngine.UnhandledExceptionHandler:PrintException(String, Exception)
UnityEngine.UnhandledExceptionHandler:HandleUnhandledException(Object, UnhandledExceptionEventArgs)

(Filename:/Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 37)
(MY JSON DATA)

所以我的 JSON 数据在调试器信息中正确显示,但为什么我无法从我的代码中获取它?像 string data = MY_JSON_DATA 让我解析?

我检查了ATSthis answer,但它似乎不起作用。我的方向正确吗?

更新:我的 Unity 是 5.3.4p6,XCode:7.3.1,iOS:9.3

UPDATE2:JSON API:Newtonsoft.JSON,WebRequest:UnityWebRequest

【问题讨论】:

  • 什么 Unity 版本?什么iOS版本?您使用的是什么 Json API?这些对于获得合理的答案很重要。
  • @Programmer 谢谢我已经添加了我正在使用的版本
  • 好的。你使用的是什么 json API?你是如何从服务器读取接收到的 json 数据的?
  • @Programmer 如果你的意思是在客户端,我使用 Newtonsoft.json 来反序列化我的 JSON 字符串。我只是通过 UnityWebRequest.send() 向我的 API 发送一个 POST 请求。并从 unityWebRequest.downloadHandler 获取内容。
  • 那么问题出在哪里?是不是崩溃了?

标签: ios iphone json unity3d httpwebrequest


【解决方案1】:

虽然在 cmets 中找到了该问题的解决方法,但我将在此提及此错误消息的含义。发生的错误是:

未处理的异常:System.NotSupportedException: /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/icalls/mscorlib/System.Reflection.Emit/DynamicMethod.cpp(26):IL2CPP:DynamicMethod::destroy_dynamic_method的内部调用不受支持 - System.Reflection .Emit 不受支持。

IL2CPP 转译器只能提前 (AOT) 工作。因此它无法在运行时创建代码,因此,如错误消息所示,不支持 System.Reflection.Emit。

一些 JSON 实用程序在运行时发出代码,但许多都具有 AOT 友好模式,但不会。在这种情况下,解决方法“有效”,因为现在使用的 JSON 实用程序是 AOT 友好的。

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多